Newsgroups: pl.comp.lang.java Subject: Java: Czego mi brak: Operator warunkowy Date: Mon, 8 Dec 2008 07:08:32 -0800 (PST) A więc brakuje mi operatora który by działał jak '.' z małym wyjątkiem jeśli nadrzędny obiekt byłby null-em, wówczas null byłby zawsze zwracany. public static LockMode getLockModeSuggested(SomeHouse someHouse) { return someHouse.?.mainEntry.?.reallyGoodLock.?.lockMode; }
return getObject().?.getField().?.getSubfield();
Object tmp = getObject(); if (tmp == null) { return null; } else { Object tmp2 = tmp.getField(); if (tmp2 == null) { return null; } else { return tmp2.getSubfield(); } }
(return (.?. (getObject) (getField) (getSubfield)))
(declare Object tmp (getObject)) (if (== tmp null) (return null) (block (declare Object tmp2 (. tmp (getField))) (if (== tmp2 null) (return null) (return (. tmp2 (getSubfield))))))To jeszcze nie Clojure, to wciąż Java (w przebraniu)!
(defmacro .?. ([x y] `(. x y)) ([x y & args] `(block (declare Object tmp# ~x) (if (== tmp# null) (return null) (.?. ~y ~@args)))))
> (+ 2 3) 5
> (defn funkcja [x] (if (< x 100) "mała liczba" "duża liczba"))) #'user/funkcja
> (funkcja 4983) "duża liczba"
{klucz1 wartość1 klucz2 wartość2 ... kluczN wartośćN}
:klucz
:drugi-klucz
[31 41 59 26 53]
["ten wektor" :ma 4 ["elementy"]]
#{31 41 59 26 53}
(map add-42 [1 2 3])
(43 44 45)
(filter even? (range 10))
(0 2 4 6 8)
(map (fn [x] (+ x 42)) [1 2 3])
(43 44 45)
(map #(+ % 42) [1 2 3])
(43 44 45)
(.toUpperCase "Hello") "HELLO" (.freeMemory (Runtime/getRuntime)) 21528704 (javax.swing.JOptionPane/showMessageDialog nil "Hello!")
:server-port :uri
:server-name :query-string
:remote-addr :request-method
:scheme :content-type
:headers :content-length
:body :character-encoding
:status
:headers
:body
(doseq [you (audience)]
(thank! you))