中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

.NET程序員的多語言筆記本:Polyglot Notebook

大(da)家好,我是Edison。

之前(qian)在學習(xi)機器學習(xi)的時(shi)候,使用了Jupyter Notebook這個筆(bi)記本工具(ju),我就在想.NET這邊有(you)沒有(you)類似(si)的,今天就跟你介紹下Polyglot Notebook這個工具(ju)。

Notebook是什么鬼?

Notebook是一種混合格式化文本和可執行代碼,創建具有可運行示例的特殊文檔程序。Notebook由多個單元格組成,它們是不同的文本區域,通常有三種區域:
  • 代碼單元:包含可執行的代碼示例
  • 輸出單元格:包含上次執行關聯代碼單元格的結果
  • Markdown單元格:用于編輯和顯示文本內容,包含符合markdown格式的文本、圖像、圖表等

Jupyter是Notebook技術的經典代表,基本(ben)我們學(xue)習Python相(xiang)關的內容(rong)如數據科學(xue)都會用到(dao)它,非常好用。

Polyglot Notebook

Polyglot Notebook是一個由(you)Microsoft開發的(de)(de)交互式編程環(huan)境,它允(yun)許用戶在(zai)同一個筆(bi)記本中混合使用多種編程語言,旨在(zai)提(ti)高(gao)開發者在(zai)處(chu)理復雜(za)數據分析和機器學習任(ren)務時(shi)的(de)(de)效率和靈活性。

一句話總結:Polyglot Notebook = 交互式編程筆記本 + Markdown + Coding

目前(qian),它支持混(hun)合使用(yong)以下編程語言:

我們目(mu)前(qian)可以在Visual Studio Code中通過安(an)(an)裝這個擴展來進行安(an)(an)裝它(ta):

快速開始

(1)準備工(gong)作

  • 安裝.NET SDK 以及 VS Code
  • 安裝Polyglot Notebook擴展插件

注意:目前Polyglot插件要求安裝.NET 9 SDK才可以運行。

(2)Hello World

創建一個hello-world.dib文(wen)件(jupyter是.ipynb文(wen)件),選擇C# Script內(nei)核,開始寫出(chu)第一句(ju)代碼,點(dian)擊下圖中的1號紅色(se)區域按鈕即可實(shi)現代碼執行(xing)輸出(chu)。

你(ni)可(ke)以通(tong)過點擊(ji)上圖(tu)中2號(hao)紅色區域,從C# 切換到(dao)另一種 編程(cheng)語言,比如切換到(dao) JavaScript:

除(chu)了添(tian)加代碼示例(li),我們還可(ke)以添(tian)加文本內容(rong),例(li)如下(xia)(xia)圖(tu)(tu)中(zhong)的(de)1號和(he)2號紅色區域所示。此外,點(dian)擊下(xia)(xia)圖(tu)(tu)中(zhong)的(de)3號紅色按鈕即可(ke)實現預(yu)覽。

再來一(yi)個(ge)復雜一(yi)點的代碼:

var displayRef =  "initial value".Display(); 
System.Threading.Thread.Sleep(5000); 
displayRef.Update("different value");

點(dian)擊執行(xing)效果演示,在阻(zu)塞兩秒(miao)后發(fa)生(sheng)value改變:

(3)變(bian)量共(gong)享

有時候我們(men)(men)在編寫多語(yu)(yu)言(yan)代碼(ma)時,想要從上一個(ge)A語(yu)(yu)言(yan)的上下文中傳遞某個(ge)變量到(dao)下一個(ge)B語(yu)(yu)言(yan)的上下文中。這時候,我們(men)(men)就可以使用 set 命令來實現。

例如,我們在C#語言中寫了如下代碼

var cars = new []{"Saab", "Volvo","BMW" };
Console.WriteLine(cars[0]);

然后,我們(men)添加一(yi)個JavaScript的(de)代(dai)碼(ma)塊(kuai),通過set命令來獲取到共(gong)享的(de)變量cars:

#!set --value @csharp:cars --name carsFromCSharp
console.log(carsFromCSharp)

效果如下(xia)圖(tu)所示(shi):

 Polyglot還提供了一個(ge)變(bian)量視圖,你可以通過點擊下面的按鈕進行查看:

 (4)用戶輸入(ru)

有(you)時候我們想(xiang)要讓代(dai)碼更加(jia)靈活,往(wang)往(wang)會依賴于(yu)用戶輸(shu)(shu)入(ru)的值(zhi),如輸(shu)(shu)入(ru)密碼,Key等信息。Polyglot提供了@input前綴來實現。例(li)如,彈出一個(ge)框(kuang)讓用戶輸(shu)(shu)入(ru)一個(ge)url,并將用戶輸(shu)(shu)入(ru)存儲到變量(liang)url中。

#!set --name url --value @input:"Please enter a URL"

效果如下圖所示:

此外,.NET交互內(nei)核也提供(gong)了一些預置(zhi)的交互式輸(shu)入(ru)方法供(gong)直接使用:

using PolyglotKernel = Microsoft.DotNet.Interactive.Kernel;
# Number Input
var input1 = await PolyglotKernel.GetInputAsync("Pick a number");
input1.Display();
# Password Input
var input2 = await PolyglotKernel.GetPasswordAsync("Pick a password");
input2.Display();

(5)安裝NuGet包

我們的C#代碼會使用很多組件,就會需要安裝一些NuGet包,可以(yi)通過Polyglot提供的(de)下列命令來實現(xian):

#r "nuget:&lt;package_name>[,<package_version>]"

例如(ru),我們安(an)裝SemanticKernel 1.11.1這個包(bao):

如果不指定版本號,就是安裝最新版本。

此外,如果(guo)你想添加(jia)自定義(yi)的NuGet源,則(ze)可以使用以下命(ming)令:

#i "nuget://your-nuget-source/v3/index.json

(6)引入外部文件

我們想要一個(ge)代(dai)碼(ma)示例塊中(zhong)引用某個(ge)類文件定義的(de)(de)幫助類,實(shi)現某個(ge)功能(neng)的(de)(de)演示,可以使用Polyglot提供的(de)(de)import命令來實(shi)現。

例如,我們在某個類文件中(zhong)定(ding)義了一個GetDescription的方法,我們可以這樣使用(yong):

#!import Utils/EnumHelper.cs
enum DayOfWeek
{
    [Description("Monday")]
    Monday = 1,
    [Description("Tuesday")]
    Tuesday = 2,
    [Description("Wednesday")]
    Wednesday = 3,
    [Description("Thursday")]
    Thursday = 4,
    [Description("Friday")]
    Friday = 5,
    [Description("Saturday")]
    Saturday = 6,
    [Description("Sunday")]
    Sunday = 7
}
var desc = EnumHelper.GetDescription(DayOfWeek.Friday);
desc.Display();

(7)呈現Mermaid圖(tu)

除了寫代碼塊(kuai)之(zhi)外,我們還可(ke)(ke)以使用(yong)Mermaid記錄代碼流(liu)來呈現(xian)流(liu)程圖,切換(huan)到Mermaid內(nei)核即(ji)可(ke)(ke):

例(li)如,我們有三個class:CheckoutService, CardService 和 ShippingService 共同完成了(le)一個電商系統結(jie)賬的功能。我們可以(yi)通過切換(huan)到Mermaid代(dai)(dai)碼環境,通過下面的Mermaid代(dai)(dai)碼完成一個流程圖/時(shi)序圖的繪制,十分方便:

sequenceDiagram
    CheckoutService ->> CardService: Charge(card)
    CardService -->> CheckoutService: OK, payment cleared
    CheckoutService -) ShippingService: Ship(cart)
    ShippingService -->> CheckoutService: OK, "shipping cart content"

繪制(zhi)出來的流程圖如下(xia)圖所示:

推薦內容

Microsoft Learn學習社區: 《》

VS Code官(guan)方文檔:《》

圣杰:《》(課程(cheng))

 

posted @ 2025-07-02 08:30  EdisonZhou  閱讀(1369)  評論(1)    收藏  舉報