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

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 --
主站蜘蛛池模板: 香港 | 长沙市| 区。| 泰顺县| 溧水县| 杭锦后旗| 利川市| 福建省| 沽源县| 莎车县| 宁海县| 昆明市| 灵璧县| 朔州市| 苏尼特右旗| 綦江县| 长白| 台江县| 西青区| 库尔勒市| 台山市| 璧山县| 睢宁县| 合阳县| 临沧市| 遂溪县| 锡林郭勒盟| 朔州市| 远安县| 玉门市| 武汉市| 长宁区| 宁国市| 贵州省| 共和县| 多伦县| 南澳县| 汾阳市| 汶上县| 连南| 赞皇县|