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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Nim教程【十二】

發(fā)布時(shí)間:2023/12/9 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nim教程【十二】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

排除指定符號

一般情況下使用import語句,會(huì)把一個(gè)模塊內(nèi)的符號都導(dǎo)入進(jìn)來

如果你像排除特定的符號(不想讓某些符號被導(dǎo)入進(jìn)來)

可以使用except子句

就像下面這樣

import?mymodule?except?y

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

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

?

導(dǎo)入指定符號

我們還可以使用from語句來導(dǎo)入指定的符號

請看下面的代碼:

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

上面的代碼中,只導(dǎo)入了mymodule模塊的x,y,z三個(gè)符號

?

強(qiáng)行名稱空間限定

先來看看下面的代碼

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

在上面的代碼中,

當(dāng)前模塊使用x的時(shí)候沒有任何限制,直接使用就可以,

就好像在當(dāng)前模塊定義的一樣

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

from關(guān)鍵詞與nil關(guān)鍵詞結(jié)合可以實(shí)現(xiàn)這種限制

來看看下面的代碼

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

有些時(shí)候模塊名稱挺長的

而又要使用名稱空間限定的時(shí)候

就會(huì)帶來很大的麻煩

這時(shí),可以給模塊名稱起一個(gè)別名

請看下面的代碼:

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

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

?

include語句

include語句與from語句有著本質(zhì)的區(qū)別

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

這有利于把一個(gè)大的文件分割成幾個(gè)文件

include?fileA,?fileB,?fileC

?

對象

在Nim中,對象和元組很像

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

當(dāng)對象還提供了很多元組沒有的功能

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

由于對象的封裝特性,所以對象的構(gòu)造方法只能用于對象的內(nèi)部

(對象應(yīng)該提供一個(gè)方法用于初始化對象,這就是構(gòu)造器)

如果你想在運(yùn)行期訪問一個(gè)對象實(shí)例的類型

可以使用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[]

標(biāo)記為*的屬性可以被外部訪問到

一個(gè)對象的類型只能通過type定義

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

如果一個(gè)對象沒有合適的祖先

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

一個(gè)對象類型可以沒有祖先,

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

可以使用inheritable來產(chǎn)生一個(gè)非RootObj的子孫對象

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

使用ref關(guān)鍵字來明確繼承關(guān)系

注意:在設(shè)計(jì)上組合往往優(yōu)于繼承

?

自引用對象類型

對象、元組都可以塑造出相當(dāng)復(fù)雜的類型(數(shù)據(jù)結(jié)構(gòu))

比如說自引用類型

請看如下代碼:

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

?

?

好了,今天就寫到這里,喜歡的朋友請幫忙點(diǎn)個(gè)推薦

轉(zhuǎn)載于:https://www.cnblogs.com/liulun/p/4582465.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。