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

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.

主站蜘蛛池模板: 南澳县| 正定县| 涿鹿县| 丰县| 巫溪县| 林芝县| 高淳县| 富裕县| 云浮市| 广宁县| 六安市| 利辛县| 梨树县| 友谊县| 丹寨县| 嘉黎县| 安丘市| 佛教| 余庆县| 长治市| 叙永县| 扶绥县| 平潭县| 浏阳市| 永城市| 库尔勒市| 安阳县| 屯留县| 呼玛县| 长治市| 任丘市| 满洲里市| 沈阳市| 济宁市| 芒康县| 沧州市| 盐津县| 太和县| 大埔区| 英山县| 阳高县|