나는 Elixir에서 enum을 만들고 싶다. 가능한가? 열거 형 (enum)이란 C/C++ 또는 Ruby 또는 다른 많은 언어의 열거 형을 의미합니다. 나는 Enum
모듈을 알고 있지만 모듈은 기능을위한 컨테이너입니다.Enums in Elixir
답변
원자 만 사용할 수 있습니다. 정적 분석의 경우 특정 값만 허용하는 유형을 정의하여 유형 스펙에서이를 사용할 수 있습니다. 그런 다음 코드를 dialyxir과 같이 확인할 수 있습니다.
@type state :: :a | :b | :c
@spec set_state(pid, state) :: :ok | {:error, term}
def set_state(pid, state)
# ...
end
@spec get_state(pid) :: state
def get_state(pid)
# ...
end
그 라이브러리는 라이브러리를 사용하고 싶지 않습니다. –
단지 개발 도구 일 뿐이므로 런타임에는 필요 없으며 컴파일 된 코드에는 흔적이 남지 않습니다. –
정확하게 이해하면 엘 릭셔에서 열거 형을 사용하는 방법을 찾고 있습니다. 원자를 키로 사용하여 Map의 인스턴스로이 작업을 수행 할 수 있습니다.
weekdays = [:monday, :tuesday, :wednesday, :thursday, :friday, :saturday, :sunday]
|> Enum.with_index
|> Map.new
이상 수동으로
weekdays = %{
monday: 0,
tuesday: 1,
wednesday: 2,
thursday: 3,
friday: 4,
saturday: 5,
sunday: 6}
당신이 사용하는 경우 조금 :
iex> weekdays.monday
0
iex> weekdays.friday
4
그러나 일반적으로 다음과 같은 원자를 사용 : 키와 원자, 짧은 손 액세스 구문은 : error 또는 : ok는 이러한 선언을 요구하지 않습니다.
예 .............. –
enum이 컴파일시에 적용되는 유형 (예 : c enums)으로 정의 된 정적 사용자를 의미하는 경우 대답은 분명히 아니오입니다.
긴 대답은 Elixir/Erlang의 기본 VM에 고정 된 수의 기본 데이터 유형 만 있다는 것입니다. 기본 데이터 유형은 다음과 같습니다.
및 3 가지 컨테이너 유형.
[Tuple, List, Map]
당신은 매우 복잡한 데이터 구조를 만들려면 다음 형식을 구성 할 수 있지만, 그 구성 유형의 행동에 "규칙"을 적용 할 경우, 당신은 그 유형을 조작하는 기능의 라이브러리 나 모듈을 작성해야 규칙에 따라.
엘릭서는 동적 언어이므로 모든 복합 데이터 유형에 "도달"하고 완전히 변형 할 수 있습니다. 정의 된 함수 집합을 통해 값을 지정하지 않으면 값에 대한 규칙을 적용 할 수있는 방법이 없습니다. 내 생각 엔 당신이 찾고있는 것은 FixedSet
유형으로 사전 정의 된 값 목록에서만 값을 취할 수있는 것입니다. 모듈로 구현하는 것이 상대적으로 간단하지만, Elixir에서 그러한 종류의 기능을 수행하는 유일한 방법은 함수 모듈 (그리고 아마도 매크로)을 작성하는 것입니다.
- 1. 전화하는 방법 : ets.fun2ms in elixir?
- 2. 무엇이 있습니까? do in the Elixir
- 3. QtScript와 enums
- 4. Enums 결합하기
- 5. NHibernate와 Enums
- 6. SQLite의 Enums
- 7. Elixir : Observables
- 8. Enums 이해하기 - 상수로 사용하기
- 9. ListView and enums
- 10. Elixir/Phoenix 열의 합
- 11. PersistenceSpecification 및 Enums
- 12. enums 이해 어려움
- 13. C++ enums 참조
- 14. C# enums/reflection
- 15. Entity Framework - WCF - Enums?
- 16. Enums 목록에 매핑 하시겠습니까?
- 17. WCF 버전 관리 Enums
- 18. C# enums as int
- 19. Laravel 5.2 데이터베이스와 enums
- 20. vb6의 동적 enums
- 21. 자바 enums : 개념적 의심
- 22. NoSql : Enums vs Strings
- 23. NHibernate의 매핑 테이블 Enums
- 24. manage.py inspectdb and enums
- 25. Android Java : enums 사용
- 26. Elixir/Elixir-mongo 컬렉션에서 Enum.to_list를 찾을 수 없음
- 27. Laravel elixir Sass error
- 28. Elixir Try Catch
- 29. Elixir JSON리스트를 구조체로 디코딩
- 30. ILog Elixir 시계의 예입니다.
[목록] (http://elixir-lang.org/getting-started/basic-types.html#linked-lists)과 함께 [Enum 모듈] (http : // elixir -lang.org/getting-started/enumerables-and-streams.html#enumerables). 얼랭 (Erlang)과 같은 엘릭서 (Erix)는 불변의 데이터 타입을 가진 함수형 프로그래밍 언어이므로리스트로 시작하고 변환 (Enum 또는 Stream 모듈을 통해)을 적용한 다음 결정한 결과를 사용할 수 있습니다. –
Ruby에서 enums가 무엇을 의미합니까? Ruby에는 Enumerable과 Enumerator가 있으며, C 나 C++의'enum '과 완전히 다릅니다. – Dogbert