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

Composite types

A composition type is a collection of named fields, grouped together and treated as a single entity; these are termed records and structures in some programming languages.

If the type can also have functions (methods) associated with them the resulting collection is termed an object and the languages which support them (Java, C++, Python, Ruby, and so on) as object-oriented.

In Julia, functions are not bundled up with the data structures they operate on. The choice of the method a function uses is termed dispatch. When the types of ALL of a function's arguments are considered when determining the method employed, this is termed multiple dispatch and Julia uses this rather than the single dispatch we associated with object methods. We will be considering the implication of multiple dispatch in detail in the next chapter.

Composite type details are defined with the type keyword, followed by a list of field names, optionally annotated with the :: operator and terminated with end. If the type of the field is not specified Any is assumed.

Consider a simple type definition for membership of a meetup group:

type Member
 fullname::ASCIIString
 email::ASCIIString
 meetup::ASCIIString
 age::Int
 organiser::Bool
 mobile::ASCIIString
end
me = ("Malcolm Sherrington", "malcolm@ljuug.org", "London Julia User Group", 55, true, "07777 555555")
julia> names(me)
6-element Array{Any,1}: # => [:fullname,:email,:group,:mobile,:organiser,:mobile]
julia>me.fullname #=> Malcolm Sherrington"
julia>me.mobile #=> "07777 555555" (-- not really my number --
主站蜘蛛池模板: 莎车县| 赣州市| 库车县| 定结县| 宣化县| 神池县| 陇南市| 应城市| 湖北省| 镇赉县| 通榆县| 麻阳| 通海县| 翁源县| 宁国市| 特克斯县| 丘北县| 林西县| 泸西县| 明溪县| 临西县| 布尔津县| 三明市| 化州市| 澄城县| 大余县| 会同县| 定州市| 江山市| 商水县| 南澳县| 赞皇县| 长海县| 大丰市| 六枝特区| 绥芬河市| 绥滨县| 平乐县| 玛沁县| 库尔勒市| 唐海县|