溫馨提示×

Elixir中怎么自定義的數(shù)據(jù)結(jié)構(gòu)和類型

小億
86
2024-04-16 12:22:08
欄目: 編程語言

在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]定義了一個包含nameage字段的自定義數(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實例并輸出其值。

0