官术网_书友最值得收藏!

Type annotations

As we saw in Chapter 2, Variables, Types, and Operations, type-annotating a variable is done with the :: operator, such as in the function definition function write(io::IO, s::String) #... end, where the parameter io has to be of type IO, and s of type String. To put it differently, io has to be an instance of type IO, and s an instance of type String. The :: operator is, in fact, an assertion that affirms that the value on the left is of the type on the right. If this is not true, a typeassert error is thrown. Try this out in the REPL:

# see the code in Chapter 6\conversions.jl: 
(31+42)::Float64

We get an ERROR: TypeError: in typeassert, expected Float64, got Int64 error message.

This is, in addition to the method specialization for multiple dispatch, an important reason why type annotations are used in function signatures.

The operator :: can also be used in the sense of a type declaration, but only in local scope, such as in functions, as follows:

n::Int16 or local n::Int16 or n::Int16 = 5 

Every value assigned to n will be implicitly converted to the indicated type with the convert function.

主站蜘蛛池模板: 玛纳斯县| 班戈县| 漠河县| 全州县| 出国| 华阴市| 彰化市| 黄陵县| 绍兴市| 铁岭市| 镇康县| 内乡县| 于都县| 普洱| 丰都县| 鸡西市| 安塞县| 刚察县| 满城县| 淅川县| 吉木萨尔县| 什邡市| 合作市| 阿尔山市| 通山县| 明星| 来安县| 紫阳县| 富蕴县| 青冈县| 洪湖市| 古蔺县| 石门县| 太仆寺旗| 保亭| 梅河口市| 淅川县| 乌拉特后旗| 安新县| 波密县| 连州市|