日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Nim教程【十二】

發布時間:2023/12/9 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nim教程【十二】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

排除指定符號

一般情況下使用import語句,會把一個模塊內的符號都導入進來

如果你像排除特定的符號(不想讓某些符號被導入進來)

可以使用except子句

就像下面這樣

import?mymodule?except?y

這行代碼排除了mymodule模塊中的y符號,其他符號都導入了

如果想排除更多的符號,可以使用逗號分割

?

導入指定符號

我們還可以使用from語句來導入指定的符號

請看下面的代碼:

from?mymodule?import?x,?y,?z

上面的代碼中,只導入了mymodule模塊的x,y,z三個符號

?

強行名稱空間限定

先來看看下面的代碼

from?mymodule?import?x,?y,?zx()???????????#?use?x?without?any?qualification

在上面的代碼中,

當前模塊使用x的時候沒有任何限制,直接使用就可以,

就好像在當前模塊定義的一樣

但有些時候,開發人員是希望他帶著名稱空間一起使用的

from關鍵詞與nil關鍵詞結合可以實現這種限制

來看看下面的代碼

from?mymodule?import?nilmymodule.x()??#?must?qualify?x?with?the?module?name?as?prefixx()???????????#?using?x?here?without?qualification?is?a?compile?error

有些時候模塊名稱挺長的

而又要使用名稱空間限定的時候

就會帶來很大的麻煩

這時,可以給模塊名稱起一個別名

請看下面的代碼:

from?mymodule?as?m?import?nilm.x()?????????#?m?is?aliasing?mymodule

按這樣的代碼,就可以使用簡短的模塊別名作為名稱空間了

?

include語句

include語句與from語句有著本質的區別

include語句在編譯期把幾個文件合并成一個文件

這有利于把一個大的文件分割成幾個文件

include?fileA,?fileB,?fileC

?

對象

在Nim中,對象和元組很像

對象也是把一系列不同的東西放到一起的一種方式

當對象還提供了很多元組沒有的功能

對象提供了繼承和信息隱藏

由于對象的封裝特性,所以對象的構造方法只能用于對象的內部

(對象應該提供一個方法用于初始化對象,這就是構造器)

如果你想在運行期訪問一個對象實例的類型

可以使用of操作符,比如下面的代碼:

typePerson?=?ref?object?of?RootObjname*:?string??#?the?*?means?that?`name`?is?accessible?from?other?modulesage:?int???????#?no?*?means?that?the?field?is?hidden?from?other?modulesStudent?=?ref?object?of?Person?#?Student?inherits?from?Personid:?int??????????????????????#?with?an?id?fieldvarstudent:?Studentperson:?Person assert(student?of?Student)?#?is?true #?object?construction: student?=?Student(name:?"Anton",?age:?5,?id:?2) echo?student[]

標記為*的屬性可以被外部訪問到

一個對象的類型只能通過type定義

Nim中的對象支持繼承,但并不支持多繼承,說不定以后會支持多繼承

如果一個對象沒有合適的祖先

那么可以使用RootObj作為作為他的祖先

一個對象類型可以沒有祖先,

但如果沒有祖先的話,那么他同樣也不能有子孫

可以使用inheritable來產生一個非RootObj的子孫對象

(Nim的GTK包就是這么干的)

使用ref關鍵字來明確繼承關系

注意:在設計上組合往往優于繼承

?

自引用對象類型

對象、元組都可以塑造出相當復雜的類型(數據結構)

比如說自引用類型

請看如下代碼:

typeNode?=?ref?NodeObj?#?a?traced?reference?to?a?NodeObjNodeObj?=?objectle,?ri:?Node?????#?left?and?right?subtreessym:?ref?Sym?????#?leaves?contain?a?reference?to?a?SymSym?=?object???????#?a?symbolname:?string?????#?the?symbol's?nameline:?int????????#?the?line?the?symbol?was?declared?incode:?PNode??????#?the?symbol's?abstract?syntax?tree

?

?

好了,今天就寫到這里,喜歡的朋友請幫忙點個推薦

轉載于:https://www.cnblogs.com/liulun/p/4582465.html

總結

以上是生活随笔為你收集整理的Nim教程【十二】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。