Symfoware

Symfowareについての考察blog

elixir入門 3.Basic operators(演算子)

elixir入門 2.Basic types(データ型)
この続きです。

今回は、この章を試してみます。
Basic operators


Basic operators



四則算:+, -, *, /
商と剰余:div, rem

これに加えて、リストの演算は、++, --


iex(71)> [1,2,3] ++ [4,5,6]
[1, 2, 3, 4, 5, 6]
iex(72)> [1,2,3] -- [2]
[1, 3]




文字列の連結は、<>


iex(73)> "hello" <> "world"
"helloworld"





比較演算子として、and, or, notが使用できます。


iex(74)> true and true
true
iex(75)> false or is_atom(:example)
true




booleanとして評価できる値以外を指定するとエラーになります。


iex(76)> 1 and true
** (ArgumentError) argument error: 1





式の評価は左側から実行され、結果が確定したらそこから右は評価されません。


iex(76)> false and error("エラー発生")
false
iex(77)> false or error("エラー発生")
** (RuntimeError) undefined function: error/1

iex(78)> true or error("エラー発生")
true
iex(79)> true and error("エラー発生")
** (RuntimeError) undefined function: error/1






||, &&, !といった演算子も使用できます。


iex(79)> 1 || true
1
iex(80)> false || 11
11
iex(81)> nil && 13
nil
iex(82)> true && 17
17
iex(83)> !true
false
iex(84)> !1
false
iex(85)> !nil
true





値の比較は、==, !=, ===, !==, <=, >=, <, >が使用できます。


iex(86)> 1 == 1
true
iex(87)> 1 != 2
true
iex(88)> 1 < 2
true




===は、より厳密に値の比較を行います。


iex(89)> 1 == 1.0
true
iex(90)> 1 === 1.0
false




データ型が異なっていても大小比較が行えます。


iex(91)> 1 < :atom
true




評価ルールは以下の通り。


umber < atom < reference < functions < port < pid < tuple < maps < list < bitstring








Operator table



予約されている演算子は以下の通り。

演算子結合性
@ Unary
. Left to right
+ - ! ^ not ~~~ Unary
* / Left to right
+ - Left to right
++ -- .. <> Left to right
in Left to right
|> <<< >>> ~>> <<~ ~> <~ <~> <|> Left to right
< > <= >= Left to right
== != =~ === !== Left to right
&& &&& and Left to right
|| ||| or Left to right
= Right to left
=> Right to left
| Right to left
:: Right to left
when Right to left
<-, \\ Left to right
& Unary



関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/07/25(土) 23:27:37|
  2. Erlang
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<elixir入門 4.Pattern matching | ホーム | elixir入門 2.Basic types(データ型)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1763-0a6b3977
この記事にトラックバックする(FC2ブログユーザー)