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應用層寫了幾年 的程式設計師,還真的沒有搞懂什麼時候需要這樣用?查了一圈,網上都是各種告訴編譯器不要把該變數放到暫存器,放到暫存器,如果其它地方改了拿不到最新的值,不要優化等等 首先說下,組合語言真的屬於基本不會那種。多執行緒...