配列(リスト)の要素の値を設定(代入)するには (set)

配列(リスト)の要素の値をインデックスで指定して設定(代入)する方法。

大抵の言語では要素を参照する書式を代入演算子の左辺に置くと、右辺の値を要素として代入してくれる。

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

配列

要素への参照を代入文の左辺に置けば、要素に値を設定できる。

arr[index] = value;

java.util.List

代入演算子の左辺に配列の要素を置くことはできず、メソッド呼び出しする。

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

イミュータブル(不変)オブジェクトであるListなどでは要素を変更することはできないが、変更可能なオブジェクト(ArrayListBufferなど)では要素への参照を代入演算子の左辺に置くことで変更できる。

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.Sequpdate メソッドがあるので、これの派生クラスであれば ListBuffer に限らず同じ書き方ができる。

PHP

要素への参照を代入文の左辺に置けば、要素に値を設定できる。

$arr[$index] = $value;

$index を省略すると、配列の最後に要素を追加する意味になる。-> array_push

Python

リストの場合は、要素への参照を代入文の左辺に置けば、要素に値を設定できる。

lst[index] = value

イミュータブルなオブジェクトであるタプルでは要素を変更できない。

Ruby / JRuby

要素への参照を代入文の左辺に置けば、要素に値を設定できる。

arr[index] = value

配列のサイズ以上のインデックスを指定した場合は、サイズが拡張され、間は nil で埋められる。

関連

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク