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

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.

主站蜘蛛池模板: 疏附县| 西吉县| 灵宝市| 西吉县| 潮州市| 岳普湖县| 林口县| 武穴市| 齐河县| 威海市| 蒙城县| 泰顺县| 宣武区| 青河县| 沙洋县| 邵武市| 张北县| 日喀则市| 自治县| 莱芜市| 卢湾区| 锦屏县| 含山县| 澄迈县| 翁牛特旗| 罗田县| 桐梓县| 朝阳区| 当涂县| 济源市| 江孜县| 雷波县| 怀来县| 吴桥县| 邯郸市| 宜章县| 广宁县| 罗定市| 吴川市| 临颍县| 郑州市|