dosya .erlang
kabuk başlatıldığında değerlendirilir gelen plağını bilmiyor ama kabuk bağlamında değerlendirilen DEĞİL olduğunu.Bu, yalnızca kabuk komutları değil, değerlendirilen genel ifadeleri içerebileceği anlamına gelir. Ne yazık ki rr()
bir kabuk komutudur (kayıtları tanımak için yerel kabuk verilerini başlatır), böylece .erlang
dosyasında kullanılamaz.
önceden yüklenmiş olması gerekir kullanıcı tanımlı modül user_default
, -include
veya -include_lib
kullanarak kayıt tanımlarını içeren dosyalar içerebilir olsa da, bu rekor tanımları sonra sadece user_default
içinde tanımlanmış fonksiyonlar için hazır olacaktır. user_default
normal derlenmiş modüldür ve dışa aktarılan işlevler diğer işlevler olarak adlandırılır, böylece kayıt tanımları kabuk içinde görünmeyecektir. user_default
, kullanıcının kabuk içinde kabuk komutları olarak adlandırılabilecek daha karmaşık işlevleri tanımlamasına izin verir.
DÜZENLEME:
Burada kısmen yanlış oldu. .erlang
'un nasıl değerlendirildiğini ve user_default
işlevlerinin nasıl çağrıldığı konusunda haklı olduğum halde, user_default.erl
kabuğunda, daha sonra kabuk içinde kullanılabilen kayıt tanımları için kabuk başlangıcında nasıl taranmadığını özledim. Teşekkürler @Peer Stritzinger bunu işaret ediyor.
rr() örneği için bu işi yapmakta zorlanıyorum. Biri için sadece yukarıda belirtildiği gibi .erlang'da belirtmek gerekirse rr/1'i bulamıyor ve rr/1 modülünün hangi modülde tanımlandığını bilmiyorum. Öte yandan bunun müsait olacağından emin değilim. tüm kabuk işlerinde. –
@Peer Stritzinger: 'rr()' bir işlev olarak tanımlanmamıştır; "local_func/7" işlevinin bir tümcesi olarak stdlib/shell.erl dosyasında bulabilirsiniz. – Zed
@Zed: evet bu benim sorunumdu ve ben de otomatik olarak aramanın bir yolunu arıyordum. Kendi çözümümdeki geçici çözümü bağışla ve başlangıçta ihtiyaç duyulan gömme yerleşik işlevlerin herhangi birisini düşünemediğimden, sorun benim için geçici çözüm tarafından çözülüyor. –