Elixir'de bir numara oluşturmak istiyorum. Mümkün mü? Enum ile C/C++ veya Ruby'den veya diğer birçok dilde enumları kastediyorum. Enum
modülünün farkındayım, ancak bu sadece bir modül - temel olarak fonksiyonlar için bir kap. Yalnızca atom kullanabilirdiniz.Elixir içindeki enumlar
cevap
Statik analiz için, sadece belirli değerleri kabul eden bir tip tanımlayabilir ve tippec'inizde kullanabilirsiniz. Daha sonra kodunuzu dialyxir ile kontrol edebilirsiniz.
@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
Bu bir kütüphane, kütüphane kullanmak istemiyorum. –
Sadece bir geliştirme aracı olsa da, çalışma zamanında ona ihtiyacınız yok ve derlenmiş kodda hiçbir iz bırakmaz. –
Seni doğru anlıyorsam, Elixir'de numaralandırma yöntemini kullanmanın bir yolunu arıyorsun. Bunu bir Harita örneğiyle: atomları anahtar olarak kullanabilirsiniz.
weekdays = [:monday, :tuesday, :wednesday, :thursday, :friday, :saturday, :sunday]
|> Enum.with_index
|> Map.new
Ya da daha elle
weekdays = %{
monday: 0,
tuesday: 1,
wednesday: 2,
thursday: 3,
friday: 4,
saturday: 5,
sunday: 6}
Eğer kullanıyorsanız biraz:
iex> weekdays.monday
0
iex> weekdays.friday
4
Ama genelde gibi atomlar kullanılarak: tuşları olarak atomlar, kısa el erişim sözdizimi : error or: ok bu bildirimleri yapmanızı gerektirmez.
evet .............. –
Sanırım kısa cevap Hayır. Enum ile, derleme zamanında (yani, c enums) zorlanan statik kullanıcı tanımlı türünü kastediyorsunuz, sonra yanıt kesinlikle hayır. Uzun cevap, Elixir/Erlang'ın temel VM'sinde sadece belirli sayıda temel veri tipinin bulunmasıdır. Temel veri türleri vardır:
[Atom, Integer, Float, BitString, Regexp, PID, Function, Reference, Port]
ve 3 Kapsayıcı türleri.
[Tuple, List, Map]
Çok karmaşık veri yapılarını oluşturmak için bu tür oluşturabilirsiniz, ancak bu oluşan türlerinin davranışına "kurallar" uygulamak istiyorsanız, o tip manipüle için fonksiyonları bir kitaplık veya modül oluşturmak gerekir kurallara göre.
Elixir dinamik bir dil olduğundan, karmaşık veri türlerine "ulaşmak" ve onu tamamen dönüştürmek her zaman mümkündür. Tanımlanmış işlevler dizisi ile bunu yapmadıkça, değerler üzerinde kuralları zorlamanın bir yolu yoktur. Benim tahminim, aradığınız şeyin sadece önceden tanımlanmış bir değerler listesinden değerler alabilmesi için FixedSet
tipi olmasıdır. Bu, bir modül olarak uygulanması nispeten kolay olurdu, ancak bir işlevler modülü (ve muhtemelen bazı makrolar) yazılması, Elixir'de bu tür bir işlevin gerçekleştirilmesinin tek yoludur.
- 1. Elixir
- 2. Elixir
- 3. Elixir
- 4. Elixir
- 5. Elixir
- 6. Elixir
- 7. Enumlar, örtüşen değerler, C#
- 8. İşlemdeki Enumlar 2.0
- 9. T4 şablonu Enumlar Oluşturulacak
- 10. Enumlar ve Birleşik Kutularda C#
- 11. pgAdmin kullanarak enumlar nasıl oluşturulur?
- 12. Swift 2.0 ile yinelemeli enumlar nasıl bildirilir
- 13. Python'daki enumlar için yaygın uygulama nedir?
- 14. Qt sinyalleri ve yuvalarındaki enumlar nasıl kullanılır?
- 15. Elixir Operator Overloading: Makullar
- 16. Gözlemci mevcut değil - Elixir
- 17. Elixir Plug nedir?
- 18. Kullanıcılara Elixir Akışı Sesi
- 19. Erlang dönüşümüne Elixir
- 20. Elixir uygulaması nasıl çalıştırılır?
- 21. Laravel 5 Elixir, DESS
- 22. Phoenix/Elixir/Erlang neden çöktü?
- 23. Elixir: Bir haritanın geri kalanını
- 24. SQLAlchemy bildirimi uzantısı vs elixir
- 25. npm install laravel-elixir çalışmıyor
- 26. Elixir - büyük harfle başlamıyor atom
- 27. Elixir Exrm'de Parametrizasyon düğümü adı
- 28. Ecto & Elixir ile varsayılan datetime
- 29. Laravel Elixir: Dosyaları nasıl küçültün?
- 30. Elixir/Erlang'da doldurulabilir PDF'leri işleme
İhtiyacınız olan şey, [Enum modülü] ile birlikte bir [liste] (http://elixir-lang.org/getting-started/basic-types.html#linked-lists) 'dir (http: // elixir -lang.org/getting-started/enumerables-and-streams.html#enumerables). Erlang gibi Elixir, değişmez veri tiplerine sahip fonksiyonel bir programlama dilidir, böylece bir listeyle başlarsınız, dönüşümleri uygulayın (Enum veya Stream modülü ile) ve sonra çıktıyı kullanabilirsiniz, ancak karar verebilirsiniz. –
Ruby'deki enumlarla ne demek istiyorsun? Ruby'de C veya C++ 'da bir' enum'dan tamamen farklı olan Enumerable ve Enumerator var. – Dogbert