📜  诗歌 - C# (1)

📅  最后修改于: 2023-12-03 15:12:09.611000             🧑  作者: Mango

诗歌 - C#

简介

诗歌是一款由微软推出的开发框架,用于在 C# 中编写诗歌、歌曲和韵文等。它集成了许多辅助工具,包括诗歌解析器、韵脚检查器和节奏分析器等,使得程序员能够更轻松地创作和编辑诗歌。

安装

要安装诗歌框架,只需在 Visual Studio 中打开 NuGet 包管理器控制台,然后执行以下命令:

Install-Package Microsoft.CodeAnalysis.CSharp.Scripting
使用
创建一个诗歌
using System;
using Microsoft.CodeAnalysis.CSharp.Scripting;

class Program
{
    static void Main()
    {
        var poem = CSharpScript.EvaluateAsync<string>("\"The woods are lovely, dark and deep,\nBut I have promises to keep,\nAnd miles to go before I sleep,\nAnd miles to go before I sleep.\"", ScriptOptions.Default.WithImports("System")).Result;
        Console.WriteLine(poem);
    }
}

这将输出如下诗歌:

The woods are lovely, dark and deep,
But I have promises to keep,
And miles to go before I sleep,
And miles to go before I sleep.
分析韵脚

诗歌框架还提供了一个韵脚分析器,可以帮助你确定一个诗歌的韵脚。以下是一个演示示例:

using System;
using Microsoft.CodeAnalysis.CSharp.Scripting;
using Microsoft.CodeAnalysis.Scripting;

class Program
{
    static async Task Main()
    {
        var code = @"using System;
                     using Microsoft.CodeAnalysis.Scripting;

                     public static class Poem
                     {
                         public static string GetRhyme(string line1, string line2)
                         {
                             var words1 = line1.Split(' ', StringSplitOptions.RemoveEmptyEntries);
                             var words2 = line2.Split(' ', StringSplitOptions.RemoveEmptyEntries);

                             if (words1.Length == 0 || words2.Length == 0) return string.Empty;

                             var lastWord1 = words1[words1.Length - 1];
                             var lastWord2 = words2[words2.Length - 1];

                             return GetRhyme(lastWord1, lastWord2);
                         }

                         public static string GetRhyme(string word1, string word2)
                         {
                             return word1.EndsWith(word2) || word2.EndsWith(word1) ? ""A"" : ""B"";
                         }
                     }";

        var script = CSharpScript.Create<string>(code, ScriptOptions.Default.WithImports("System", "System.Linq"));
        var compilation = await script.RunAsync();

        var line1 = "I do not like them, Sam-I-am.";
        var line2 = "I do not like green eggs and ham.";

        var getRhyme = compilation.GetVariable<Func<string, string, string>>("Poem.GetRhyme");

        var rhymeType = getRhyme(line1, line2);

        Console.WriteLine($"The rhyme type is: {rhymeType}");
    }
}

输出:

The rhyme type is: A
编写韵文

诗歌框架还提供了一种便捷的语法,可以让程序员更轻松地编写韵文。以下是一个简单的示例:

using System;
using Microsoft.CodeAnalysis.CSharp.Scripting;

class Program
{
    static void Main()
    {
        var poem = CSharpScript.EvaluateAsync<string>(
            @"
            var r = new Random();
            var words = new[] {""trees"", ""breeze"", ""seas"", ""keys"", ""please"", ""piano""};
            var line1 = $""The {words[r.Next(0, words.Length)]} sway in the breeze."";
            var line2 = $""A calmness comes from the seas."";
            var line3 = $""I tap the keys, I play the tunes."";
    
            return $@""
                     {line1}
                     {line2}
                     {line3}
                     """;
            ", ScriptOptions.Default.WithImports("System")).Result;

        Console.WriteLine(poem);
    }
}

这将输出如下诗歌:

The breeze sway in the breeze.
A calmness comes from the seas.
I tap the keys, I play the tunes.