julia-模组Core(第9讲)

模组Core
==========================================================================
1.用途:Core语言“内置”的标识符模块,标识符是核心语言的一部分,而不是库的一部分。
               每个模块都隐式指定using Core,因为没有这些定义您将无法做任何事情。

==========================================================================
2.函数:

===(x,y) -> Bool
≡(x,y) -> Bool                #在没有程序可以区分它们的意义上,确定x和y是否相同

a,b= [1, 2], [1, 2]
a == b,a === b,a === a#(true, false, true)
≡(a,b)==(a === b)        # true
==========================================================================
isa(x, type) -> Bool      #确定x是否属于给定type;可用中缀运算符x isa type
isa(1, Int)==(1 isa Int)   # true

isa(1, Matrix),isa(1, Char), isa(1, Number)#(false, false, true)
==========================================================================
isequal(x, y)# 类似==,除处理浮点数和缺失值:NaN=NaN,-0.0!=0.0,missing=missing
                   # 标量,int数组直接用==;自定义时必须暗示hash(x) == hash(y)

[1., NaN] == [1., NaN],isequal([1., NaN], [1., NaN])# (false, true)
(0.0 == -0.0),isequal(0.0, -0.0)# (true, false)
==========================================================================
isequal(x)
# 创建一个将其参数与xusing 比较的函数isequal,即一个等效于的函数y -> isequal(y, x)。

返回的函数类型为Base.Fix2{typeof(isequal)},可用于实现专门的方法。
==========================================================================
isless(x, y)# 根据固定顺序测试是否x小于y;比较关系可传递isless(x, y) && isless(y, z)==>isless(x, z)

 x,y=[1,2],[1,3]
 isless(x,y)# true
==========================================================================
ifelse(condition::Bool, x, y)# 返回x如果condition是true,否则返回y

ifelse(1 > 2, 1, 2)# 2
==========================================================================
typeassert(x, type)# 抛出一个TypeError除非x isa type;x::type调用此函数

typeassert(2.5, Int)#TypeError
==========================================================================
typeof(x)                           # 获取x数据类型

a = 1//2;typeof(a)             # Rational{Int64}
M = [1 2; 3.5 4];typeof(M)# Array{Float64,2}
==========================================================================
tuple(xs...)                            #构造元组
ntuple(f::Function, n::Integer)#创建长度为n的元组,将每个元素计算为f(i),i为元素索引

tuple(1, 'a', pi)   # (1, 'a', π)
ntuple(i -> 2*i, 4)# (2, 4, 6, 8)
==========================================================================
objectid(x)#获取x对象哈希值

x,y=1,1
objectid(x)==objectid(y)#如x === y   UInt64 0xa6165bea1dfbfae6
==========================================================================
hash(x[, h::UInt])计算一个整数哈希码,isequal(x,y)意味hash(x)==hash(y);参数h是要与结果混合的哈希码

hash(a)    # 0x02011ce34bce797f
objectid(a)# 0xa6165bea1dfbfae6
==========================================================================

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章