2014-09-12 3 views
-1

Я хочу, чтобы распечатать элемент (строка, INT) массив в Скале, но единственное, что я получаю эту ошибкуКак распечатать конкретный объект в многомерном массиве, Scala

ниже код не работает :

var lib = ("word",2) 
> lib: (String, Int) = (word,2) 

lib(0) 
<console>:9: error: (String, Int) does not take parameters 
      lib(0) 
      ^

это работает хорошо, но не подходит мои запросы

var lib = Array.ofDim[Any](2,2) 
lib(0) = Array("word",2) 
lib(0)(0) 
>res86: Any = word 

какие-либо предложения, как я могу напечатать этот элемент из ??

+1

Вы создаете 'Tuple2', в вашем случае нотации доступа является' 'lib._1' и lib._2'. –

+0

ОК, это помогло немного, спасибо –

+0

Вниз голосование, потому что пользователь не сделал * никаких усилий для Google, если на самом деле Googled «scala array» или «scala list» легко увидеть, что это ** не ** массив. – samthebest

ответ

1

lib является кортежем. Это Tuple2, потому что он состоит из двух элементов.

Чтобы получить доступ к элементам:

var lib = ("word", 2) 
println(lib._1) // word 
println(lib._2) // 2 

val (w, n) = lib 
println(w)  // word 
println(n)  // 2 

// for function 
iterableOfTuple foreach {tuple => println(tuple._1)} 
iterableOfTuple foreach {case (w,n) => println(w)} 
+0

ok, как изменить значение элемента tuple? как lib (0) ._ 1 = 1010? –

+0

@ViktorMusienko Вы не можете. Кортежи неизменяемы и не могут быть переназначены. –

+0

в любом случае, большое вам спасибо, это было полезно –

Смежные вопросы