配列(リスト)の要素の値を設定(代入)するには (set) 2016/09/27
配列(リスト)の要素の値をインデックスで指定して設定(代入)する方法。
大抵の言語では要素を参照する書式を代入演算子の左辺に置くと、右辺の値を要素として代入してくれる。
| Javaの配列 | arr[index] = value; |
JavaのList |
lst.set(index, value); |
| Scala | lst(index) = value; |
| PHP | $arr[$index] = $value; |
| Python | lst[index] = value |
| Ruby | arr[index] = value |
| Perl | $arr[$index] = $value; |
Java
配列 2015/03/26
要素への参照を代入文の左辺に置けば、要素に値を設定できる。
arr[index] = value;
java.util.List
2015/04/25
代入演算子の左辺に配列の要素を置くことはできず、メソッド呼び出しする。
lst.set(index, value);
Signature:
E java.util.List<E>#set(int index, E element)
java.util.List#set | Java Platform SE 8 Javadoc
http://docs.oracle.com/javase/8/docs/api/java/util/List.html#set-int-E-
Scala 2015/01/19
イミュータブル(不変)オブジェクトであるListなどでは要素を変更することはできないが、変更可能なオブジェクト(ArrayやListBufferなど)では要素への参照を代入演算子の左辺に置くことで変更できる。
Javaと違って要素へのアクセスは[]でなく()を使い、代入でも()を使う。
lst(index) = value;
Array(Javaの配列)での例
val lst = Array(10, 20, 30, 40, 50);
lst(3) = 400;
println(lst(3));
// 400
ListBufferでの例
import scala.collection.mutable.ListBuffer;
val lst = ListBuffer(10, 20, 30, 40, 50);
lst(3) = 400;
println(lst);
// List(10, 20, 30, 400, 50)
Array以外での要素への代入は、JVM上では実際にはupdateというメソッド呼び出しになっているので、
lst.update(3, 400);
と書いても同じ。scala.collection.mutable.Seq に update メソッドがあるので、これの派生クラスであれば ListBuffer に限らず同じ書き方ができる。
PHP 2015/03/26
要素への参照を代入文の左辺に置けば、要素に値を設定できる。
$arr[$index] = $value;
$index を省略すると、配列の最後に要素を追加する意味になる。-> array_push
Python 2015/03/26
リストの場合は、要素への参照を代入文の左辺に置けば、要素に値を設定できる。
lst[index] = value
イミュータブルなオブジェクトであるタプルでは要素を変更できない。
Ruby / JRuby 2015/03/26
要素への参照を代入文の左辺に置けば、要素に値を設定できる。
arr[index] = value
配列のサイズ以上のインデックスを指定した場合は、サイズが拡張され、間は nil で埋められる。