SORU
27 AĞUSTOS 2009, PERŞEMBE


Komut satırı arabirimi ile Clojure bir uygulama bina?

Ben sadece w/ Clojure başladı (Ruby gelen) ve komut satırı arayüzü ile küçük bir uygulama oluşturmak istiyorum. Nasıl bir CL giriş/çıkış yapabilirim?

Bir clojure olduğunu fark ettim.contrib.komut satırı, ama belgelere ince.

http://github.com/richhickey/clojure-contrib/blob/ffa868411cda6c617105b52b4f6f9e0f37ee8c24/src/clojure/contrib/command_line.clj

CEVAP
27 AĞUSTOS 2009, PERŞEMBE


Burada with-command-line makro kullanarak bir örnek. Aşağıdaki kod hiçbir şey yapmayan bir ana yöntem ile boş bir sınıf belirtir ama komut satırı argümanları değerleri çıktı.

(ns cmd-line-demo
  (:gen-class)
  (:use clojure.contrib.command-line))

(defn -main [& args]
  (with-command-line args
      "Command line demo"
      [[foo "This is the description for foo" 1]
       [bar "This is the description for bar" 2]
       [boolean? b? "This is a boolean flag."]
       remaining]
    (println "foo: " foo)
    (println "bar: " bar)
    (println "boolean?: " boolean?)
    (println "remaining: " remaining)))

ÇOĞALTMA de sınıf derleme:

user> (compile 'cmd-line-demo)
cmd-line-demo

Örnek kullanım

1) hayır komut satırı argümanları ile Yürütülen Yardım bilgisi gösterilecektir. Yardım bilgi da --help -h bayrakları ile görüntülenebilir. Yardım bilgileri otomatik olarak cmdspec oluşturulur unutmayın.

$ java -classpath . cmd_line_demo
Command line demo
Options
  --foo <arg>    This is the description for foo  [default 1]
  --bar <arg>    This is the description for bar  [default 2]
  --boolean, -b  This is a boolean flag.  

2) Tanımlanmamış değişkenleri cmdspec belirtilen varsayılan değer olarak bağlayıcı alırsınız. Örnek olarak, bar 2 varsayılan değeri vardır.

$ java -classpath . cmd_line_demo --foo "changed value"
foo:  changed value
bar:  2
boolean?:  nil
remaining:  []

3) Boolean bayrakları soneki ile belirtilen "?" cmdspec. Bayrağı kendine yapar unutmayındeğilbu vardır "?" adının bir parçası olarak.

$ java -classpath . cmd_line_demo -boolean
foo:  1
bar:  2
boolean?:  true
remaining:  []

4) Ayrıca cmdspec birden fazla semboller belirterek bayrak takma ad belirtebilirsiniz unutmayın. boolean? b? bayraklar ile bunu yaptım.

5) son olarak, remaining ilişkili bayrakları olmadan, tüm diğer bağımsız değişkenleri yakalamak belirtilen ettim.

$ java -classpath . cmd_line_demo -foo test file1 file2 file3
foo:  test
bar:  2
boolean?:  nil
remaining:  [file1 file2 file3]

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • Hallucination Land

    Hallucinatio

    14 Ocak 2011
  • monkophile

    monkophile

    25 Temmuz 2007