عند كتابة "مرحبا، العالم" في كلوجر REPL، فلماذا نقول "لا شيء"؟

StackOverflow https://stackoverflow.com/questions/1416067

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا كتبته ذلك في كلوجر REPL (باستخدام enclojure نتبيانس المساعد):

user=> "hello, world"
"hello, world"
nil

ما هو لا شيء عنه؟

هل كانت مفيدة؟

المحلول

وكل وظيفة أو استدعاء الماكرو بإرجاع قيمة في كلوجر، حتى الأشياء مثل البيانات if أو يبني حلقات أو تعريفات الدالة المستوى الأعلى أو بيانات الطباعة، والتي في لغات أخرى هي "بيانات". ليس هناك بيان / التعبير الانقسام في اللثغ. كل شيء هو تعبير.

وهكذا println والأصدقاء الطباعة إلى معيار الانتاج باعتباره من الآثار الجانبية والعودة nil، كما تفعل معظم الوظائف التي لم يكن لديك أي شيء مفيد للعودة.

ولكن كتابة سلسلة حرفية في REPL يجب أن تعود السلسلة نفسها، كما هو الحال في digitalross " آخر.

user> (println "hello world")
hello world
nil
user> "hello world"
"hello world"
user>

في الحالة الأولى، خط hello world هو ما طبع على المعايير الانتاج println. nil هو القيمة التي تم إرجاعها من println. في الحالة الثانية، "hello world" هو القيمة التي تم إرجاعها من "hello world" منذ سلسلة تقيم لنفسها. تتم طباعة أي شيء لمعيار الانتاج في هذه القضية.

و(الوحل وبعض واجهات REPL أخرى سوف اللون مفيد مستوى الانتاج (خط hello world أعلاه) مختلفة عن القيمة التي تم إرجاعها من ما كتبته في REPL (nil أعلاه)، لأنه قد يكون مربكا على خلاف ذلك).

وهذا هو ما يجب أن نرى في لREPL. ما قمت بنشرها يجب أن يكون قطعة أثرية من Enclojure.

نصائح أخرى

لا يمكن استنساخ ...

وانها لا تفعل ذلك بالنسبة لي على كلوجر 1.0.0 -

$ java -cp clo*.jar clojure.lang.Repl
Clojure 1.0.0-
user=> "hello, world"
"hello, world"
user=> 

وهناك بعض الخلل الحديثة المتعلقة بتفسير نهاية CRLF تسلسل خط واثنين من تعبيرات مختلفة تحت النوافذ. يجب أن تكون قيمة العائد من سلسلة في سلسلة كلوجر في النفس.

وأعتقد أنها قيمة الإرجاع التعبير الخاص بك. انها حالة في روبي مع أسلوب يضع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top