Skip to content

Instantly share code, notes, and snippets.

@shigemk2
shigemk2 / error_define.php
Created February 23, 2013 17:18
エラーは出るけど、なぜか普通に表示される
<?php
/* define('HOGECON', false); */
if(HOGECON) {
print_r('hoge');
}
@shigemk2
shigemk2 / format.el
Created February 23, 2013 17:24
formatを試しに使ってみる
(format "%s" "foo") ; => "foo"
;; 整数は%sまたは%dで指定する
(format "%d" 1) ; => "1"
;; 右寄せ 左寄せ 0詰め
(format "[%2d] [%-2d] [%02d]" 3 3 3) ; => "[ 3] [3 ] [03]"
;; %cは文字を文字列に変換する
(format "文字から文字列へ: %c" ?a) ; => "文字から文字列へ: a"
;; %%は%そのものを表す
(format "%d円の商品の消費税は%d%%で%d円です" 500 5 (* 500 0.05)) ; => "500円の商品の消費税は5%で25円です"
(format "%s%s" "Emacs" "Lisp") ; => "EmacsLisp"
@shigemk2
shigemk2 / M-coron.el
Created February 23, 2013 17:24
M-;を使ってみよう
(+ 3 4) ; => 7
(* 5 6) ; => 30
;; M-; で ;がレイアウトされ、もう一度M-; で; =>となる
@shigemk2
shigemk2 / global-variable.el
Created February 23, 2013 17:26
グローバル変数をごにょごにょ
(setq x 1)
x ; => 1
(let ((x 2)
null) ; グローバル変数xを一時的に変更する
x ; => 2
null ; => nil
;; letは入れ子に出来る
(let ((x 3)) x) ; => 3
)
;; letを抜けたらグローバルの値になる
@shigemk2
shigemk2 / make-a-list.el
Last active December 14, 2015 03:19
リストをごにょごにょしてみよう http://www.amazon.co.jp/dp/4774148970
;;; リストを作る
(cons 1 (cons 2 (cons 3 nil))) ; => (1 2 3)
(list 1 2 3) ; => (1 2 3)
'(1 2 3) ; => (1 2 3)
;; リストに要素を追加するときは前から追加される
(setq l (cons 3 nil)) ; => (3)
(setq l (cons 2 l)) ; => (2 3)
(setq l (cons 1 l)) ; => (1 2 3)
;; リストのcarは先頭、cdrは残りすべて
(car '(1 2 3)) ; => 1
@shigemk2
shigemk2 / progn-vs-cond.el
Last active December 14, 2015 03:28
ifとprognをcondに置き変えるとインデントがきれいになる http://www.amazon.co.jp/dp/4774148970
;;ifとprognをcondに置き変えるとインデントがきれいになる
(let (a b)
(if (= 1 1)
(progn
(setq a 2)
(setq b 3))
(setq a 10)
(setq b 20))
(list a b)) ; => (2 3)
(let (a b)
@shigemk2
shigemk2 / conf-vs-if.el
Last active December 14, 2015 03:28
ネストしたif式をcondに置き換える http://www.amazon.co.jp/dp/4774148970
;;; ネストしたif式をcondに置き換える
(if (zerop (% 10 4))
"10は4の倍数"
(if (zerop (% 10 2))
"10は偶数"
"10は奇数")) ; => "10は偶数"
(cond ((zerop (% 10 4))
"10は4の倍数")
((zerop (% 10 2))
"10は偶数")
;; and 返り値は最後に評価したフォームで、いずれかが偽ならばnil
(and t t) ; => t
(and nil t) ; => nil
(and 1 2) ; => 2
(if 1 2) ; => 2
(and 1 2 3) ; => 3
;; or 返り値は最後に評価したフォームで、すべて偽ならばnil
(or nil nil) ; => nil
(or nil t) ; => t
(or nil 1 2) ; => 1
@shigemk2
shigemk2 / while-vs-dolist.el
Last active December 14, 2015 03:39
whileをdolistに置き換える http://www.amazon.co.jp/dp/4774148970
;;; whileをdolistに置き換える
(let ((lst '(1 2 3)) result)
(while (car lst)
(setq result (cons (car lst) result))
(setq lst (cdr lst)))
(cons 'finished result)) ; => (finished 3 2 1)
(let (result)
(dolist (x '(1 2 3))
(setq result (cons x result))) ; => nil
(cons 'finished result)) ; => (finished 3 2 1)
;; aは必須引数で、bとcは省略可能関数(&optionalをつける)
(defun optional-arg (a &optional b c)
(setq c (or c 20)) ; デフォルト引数もどき
(list a b c))
(optional-arg 1) ; => (1 nil 20)
(optional-arg 1 2) ; => (1 2 20)
(optional-arg 1 2 3) ; => (1 2 3)
(optional-arg 1 2 3 4) ; => エラー