Yanıtlar:
İşlev çağrısı sözdizimi söz konusu olduğunda Nim oldukça esnektir. Örneğin, bir işlevi bir argümanla çağırmanın bazı yolları şunlardır:
ord(c)
ord c
c.ord
Ve bir işlevi iki argümanla çağırmanın yolları:
max(a,b)
a.max(b)
a.max b
Durumunuza en uygun, özellikle öncelikli olmak için en golf halini seçin. Örneğin, karşılaştırın:
abs(n)+2
n.abs+2
(abs n)+2
Aksine:
abs(n+2)
(n+2).abs
abs n+2
future
Modülü kullanınfuture
Lambda'lar ve liste türetimi: modül iki ana bayt tasarrufu özellikleri içerir. Lambdalar son derece kullanışlıdır.
Örneğin, bu:
proc f(s:any):any=s&", world!"
bu kısaltılabilir:
import future
s=>s&", world!"
bayt tasarrufu sağlar. Bununla birlikte, lambdasların bir parametre listesinin dışında kullanılamayacağını unutmayın - bu nedenle kodunuzu test etmek için aşağıdaki gibi bir şey yapmanız gerekecektir:
import future
proc test(f: string -> string) = echo f "Hello"
test(s=>s&", world!")
Ayrıca, liste kavrayışları future
modül ile birlikte kullanılabilir . Örneğin, bu kod @[...]
100'den küçük tüm karelerden bir seq ( ) 4 ile yazdırılır :
import future
echo lc[x*x|(x<-1..9,x*x mod 4==0),int]
any
yerine bazen kullanabileceğinizi belirtmek gerekir string
, ancak bu yine de kaydeder.
any
, bahşiş için teşekkürler! Bunu bir cevap olarak göndermelisin.
proc(s:any):any=s&", world!"
bırakarak yapabilirsiniz<space>f
proc
max a,b
Hatta işe yaradığını unutmayın (bazen).