Confusion over acronym map

I would think of the following code:

val a = Array(1, 2, 3, 4, 5)
println(a.map(n => "x"))

May be reduced to:

val a = Array(1, 2, 3, 4, 5)
println(a.map("x"))

But the latter gives me an exception below. Why is this?

java.lang.StringIndexOutOfBoundsException: row index out of range: 1 java.lang.StringIndexOutOfBoundsException: row index out of range: 1 on java.lang.String.charAt (String.java:658) in scala.collection.immutable.StringLike $ class .apply (StringLike.scala: 52) in scala.collection.immutable.WrappedString.apply (WrappedString.scala: 33) in scala.collection.immutable.WrappedString.apply (WrappedString.scala: 33) in scala.collection.TraversableLike $ $ anonfun $ Map $ 1.Apply (TraversableLike.scala: 245) in scala.collection.TraversableLike $$ anonfun $ Map $ 1.Apply (TraversableLike.scala: 245) in scala.collection.IndexedSeqOptimized $ class.foreach (IndexedSeqOptimized 33) in scala.collection.mutable.ArrayOps $ ofInt.foreach (ArrayOps.scala: 234) in scala.collection.TraversableLike $ class.map (TraversableLike.scala: 245) in scala.collection.mutable.ArrayOps $ ofInt.map (ArrayOps.scala: 234)

+4
2

Strings Int => Char, char .

a.map("x")

a.map(i => "x".charAt(i))

a 1, char 1 x, , .

, "x", Function.const:

import Function.const
a.map(const("x"))
+7

scala String java.lang.Strings.

String scala.collection.immutable.StringOps, StringLike[ String ], IndexedSeqOptimized[Char, String].

, trait IndexedSeqOptimized[Char, String] apply(index: Int): Char, StringLike[ String ].

, String, val s = "A String", Int => Char - val c = s( 0 ).

a.map( "x" ) a.map( i => "x".apply( i ) ) a.map( "x".apply( _ ) ) a.map( i => ( "x" )( i ) ) a.map( "x".apply ).

+3

All Articles