Julia where與型別限定

2021-10-16 09:39:27 字數 2156 閱讀 9945

where 作為一種限定,很有意思。

julia> array where t  == array

#where後面不能有==

error: syntax: invalid variable expression in

"where" around repl[15]:1

stacktrace:

[1] top-level scope at repl[15]:1

julia> array where t

array where t

julia> array

== array where t # 可以

false

如果我要設計一種dict,key是string,但value是可以是任何array, 類似於array where t ,要求這個dict型別,同時可以存放不同型別的array。也許可以想到:

dict

} where t; 與dictwhere t}

我的理解:

dict

} where t;

#存放一種型別的資料,不同混同。

因此,你可以選擇:

dictwhere t}
既可以dict},也可以dict};

julia> instrs               = dict(

"ylxf"

=>[(

"ic","ih"

)],"***y"

=>

["ic"])

dict where t} with 2 entries:

"***y"

=>

["ic"

]"ylxf"

=>[(

"ic", "ih"

)]

julia> s = dict where t}()

;julia> setindex!

(s,[

"a"],"a"

)dict where t} with 1 entry:

"a"=>

["a"

]julia> setindex!

(s,[

("a","b"

)],"b"

)dict where t} with 2 entries:

"b"=>[(

"a", "b")]

"a"=

>

["a"

]

julia> dict where t}

== dict

} where t

false

julia> a = dict

} where t

dict

} where t

julia> typeof(a)

unionall

julia> b = dict where t}

dict where t}

julia> typeof(b)

datatype

where目前還沒找到放在{}外的型別,where放在函式後面,這個是比較常見的。

這種情況類似於:

julia> a = dict

} where t

dict

} where t

julia> f(a::t) where t = dict}(

)f (generic function with 1 method)

julia> typeof(6.0)

float64

julia> typeof(f(6.0))

dict

}

julia> a = dict

} where t

dict

} where t

也就是說,a型別的具體化,目前還沒找到實現方法。

julia> f(a::t) where t = array,1}()

f (generic function with 1 method)

JAVA泛型方法與型別限定

泛型方法可以定義在普通類中,也可以定義在泛型類中 1 class arrayalg 5 注意 型別變數放在修飾符後 public static 當呼叫泛型方法時,方法名前尖括號中放入具體的型別 string middle arrayalg.getmiddle john q.public 大多數情況下...

C語言 型別限定

const const是代表乙個不能改變的值的 volatile 代表變數是乙個可能被cpu指令之外的地方改變的 e.g.include int main int i 10 i i 20 i i 30 printf d n i return 0 如果是這樣寫的 那麼編譯器會覺得你很智障,它會自動把你...

linux volatile型別限定符

背景 一直會有意無意的看到有這個volatile,但是做為乙個在linux應用層寫了幾年 的程式設計師,還真的沒有搞懂什麼時候需要這樣用?查了一圈,網上都是各種告訴編譯器不要把該變數放到暫存器,放到暫存器,如果其它地方改了拿不到最新的值,不要優化等等 首先說下,組合語言真的屬於基本不會那種。多執行緒...