在Elixir中,可以使用defstruct
關(guān)鍵字來定義自定義數(shù)據(jù)結(jié)構(gòu),使用@type
注解來定義自定義類型。
以下是一個例子,定義一個包含姓名和年齡的自定義數(shù)據(jù)結(jié)構(gòu)Person
,并定義一個類型person
:
defmodule CustomTypes do
@enforce_keys [:name, :age]
defstruct [:name, :age]
@type person :: %__MODULE__{
name: String.t(),
age: integer()
}
end
在上面的示例中,defstruct [:name, :age]
定義了一個包含name
和age
字段的自定義數(shù)據(jù)結(jié)構(gòu)Person
,@type person :: %__MODULE__{name: String.t(), age: integer()}
定義了一個person
類型,指定了name
字段為字符串類型,age
字段為整數(shù)類型。
可以在代碼中使用定義的數(shù)據(jù)結(jié)構(gòu)和類型:
defmodule Example do
import CustomTypes
def create_person(name, age), do: %Person{name: name, age: age}
def print_person(%person{name: name, age: age}) do
IO.puts "Name: #{name}, Age: #{age}"
end
def print_person(%{name: name, age: age}), do: IO.puts "Name: #{name}, Age: #{age}"
end
person = Example.create_person("Alice", 30)
Example.print_person(person)
在Example
模塊中使用了定義的Person
數(shù)據(jù)結(jié)構(gòu)和person
類型,并創(chuàng)建了一個person
實例并輸出其值。