Problem in converting from for-comprehension to map
I'm trying to convert a Scala for comprehension
into using map
and I'm running into a problem.
For illustration, consider that following conversion that works as expected.
scala> for (i <- 0 to 10) yield i * 2
res0: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
scala> 0 to 10 map { _ * 2 }
res1: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
However, the following isn't working. What mistake am I making?
scala> import util.Random
import util.Random
scala> for (i <- 0 to 10) yield Random.nextInt(10)
res2: scala.collection.immutable.IndexedSeq[Int] = Vector(3, 0, 7, 5, 9, 4, 6, 6, 6, 3, 0)
scala> 0 to 10 map { Random.nextInt(10) }
<console>:13: error: type mismatch;
found : Int
required: Int => ?
0 to 10 map { Random.nextInt(10) }
^
The root cause might be either my inability to correctly decipher the error message or fixing the cause. As I review the signature of Random.nextInt
it seems to be returning an Int
.
scala> Random.nextInt
def nextInt(n: Int): Int def nextInt(): Int
Error message is saying that I need to provide a function that takes an Int
and returns "something" (not sure what ?
stands for).
required: Int => ?
So I can see that there is a mismatch. But how do I convert what I want to happen -- a call to Random.nextInt(10)
-- into a function and pass it to map
?
Any help in understanding the error message below would be appreciated.
scala> 0 to 10 map { Random.nextInt(10) }
<console>:13: error: type mismatch;
found : Int
required: Int => ?
0 to 10 map { Random.nextInt(10) }
^
(Edit)
Doing the following helped.
scala> def foo(x: Int): Int = Random.nextInt(10)
foo: (x: Int)Int
scala> 0 to 10 map { foo }
res10: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 2, 1, 7, 6, 5, 1, 6, 0, 7, 4)
But comments on this or suggestions of recommended Scala-way to do this would be appreciated.
scala for-comprehension
add a comment |
I'm trying to convert a Scala for comprehension
into using map
and I'm running into a problem.
For illustration, consider that following conversion that works as expected.
scala> for (i <- 0 to 10) yield i * 2
res0: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
scala> 0 to 10 map { _ * 2 }
res1: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
However, the following isn't working. What mistake am I making?
scala> import util.Random
import util.Random
scala> for (i <- 0 to 10) yield Random.nextInt(10)
res2: scala.collection.immutable.IndexedSeq[Int] = Vector(3, 0, 7, 5, 9, 4, 6, 6, 6, 3, 0)
scala> 0 to 10 map { Random.nextInt(10) }
<console>:13: error: type mismatch;
found : Int
required: Int => ?
0 to 10 map { Random.nextInt(10) }
^
The root cause might be either my inability to correctly decipher the error message or fixing the cause. As I review the signature of Random.nextInt
it seems to be returning an Int
.
scala> Random.nextInt
def nextInt(n: Int): Int def nextInt(): Int
Error message is saying that I need to provide a function that takes an Int
and returns "something" (not sure what ?
stands for).
required: Int => ?
So I can see that there is a mismatch. But how do I convert what I want to happen -- a call to Random.nextInt(10)
-- into a function and pass it to map
?
Any help in understanding the error message below would be appreciated.
scala> 0 to 10 map { Random.nextInt(10) }
<console>:13: error: type mismatch;
found : Int
required: Int => ?
0 to 10 map { Random.nextInt(10) }
^
(Edit)
Doing the following helped.
scala> def foo(x: Int): Int = Random.nextInt(10)
foo: (x: Int)Int
scala> 0 to 10 map { foo }
res10: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 2, 1, 7, 6, 5, 1, 6, 0, 7, 4)
But comments on this or suggestions of recommended Scala-way to do this would be appreciated.
scala for-comprehension
add a comment |
I'm trying to convert a Scala for comprehension
into using map
and I'm running into a problem.
For illustration, consider that following conversion that works as expected.
scala> for (i <- 0 to 10) yield i * 2
res0: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
scala> 0 to 10 map { _ * 2 }
res1: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
However, the following isn't working. What mistake am I making?
scala> import util.Random
import util.Random
scala> for (i <- 0 to 10) yield Random.nextInt(10)
res2: scala.collection.immutable.IndexedSeq[Int] = Vector(3, 0, 7, 5, 9, 4, 6, 6, 6, 3, 0)
scala> 0 to 10 map { Random.nextInt(10) }
<console>:13: error: type mismatch;
found : Int
required: Int => ?
0 to 10 map { Random.nextInt(10) }
^
The root cause might be either my inability to correctly decipher the error message or fixing the cause. As I review the signature of Random.nextInt
it seems to be returning an Int
.
scala> Random.nextInt
def nextInt(n: Int): Int def nextInt(): Int
Error message is saying that I need to provide a function that takes an Int
and returns "something" (not sure what ?
stands for).
required: Int => ?
So I can see that there is a mismatch. But how do I convert what I want to happen -- a call to Random.nextInt(10)
-- into a function and pass it to map
?
Any help in understanding the error message below would be appreciated.
scala> 0 to 10 map { Random.nextInt(10) }
<console>:13: error: type mismatch;
found : Int
required: Int => ?
0 to 10 map { Random.nextInt(10) }
^
(Edit)
Doing the following helped.
scala> def foo(x: Int): Int = Random.nextInt(10)
foo: (x: Int)Int
scala> 0 to 10 map { foo }
res10: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 2, 1, 7, 6, 5, 1, 6, 0, 7, 4)
But comments on this or suggestions of recommended Scala-way to do this would be appreciated.
scala for-comprehension
I'm trying to convert a Scala for comprehension
into using map
and I'm running into a problem.
For illustration, consider that following conversion that works as expected.
scala> for (i <- 0 to 10) yield i * 2
res0: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
scala> 0 to 10 map { _ * 2 }
res1: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
However, the following isn't working. What mistake am I making?
scala> import util.Random
import util.Random
scala> for (i <- 0 to 10) yield Random.nextInt(10)
res2: scala.collection.immutable.IndexedSeq[Int] = Vector(3, 0, 7, 5, 9, 4, 6, 6, 6, 3, 0)
scala> 0 to 10 map { Random.nextInt(10) }
<console>:13: error: type mismatch;
found : Int
required: Int => ?
0 to 10 map { Random.nextInt(10) }
^
The root cause might be either my inability to correctly decipher the error message or fixing the cause. As I review the signature of Random.nextInt
it seems to be returning an Int
.
scala> Random.nextInt
def nextInt(n: Int): Int def nextInt(): Int
Error message is saying that I need to provide a function that takes an Int
and returns "something" (not sure what ?
stands for).
required: Int => ?
So I can see that there is a mismatch. But how do I convert what I want to happen -- a call to Random.nextInt(10)
-- into a function and pass it to map
?
Any help in understanding the error message below would be appreciated.
scala> 0 to 10 map { Random.nextInt(10) }
<console>:13: error: type mismatch;
found : Int
required: Int => ?
0 to 10 map { Random.nextInt(10) }
^
(Edit)
Doing the following helped.
scala> def foo(x: Int): Int = Random.nextInt(10)
foo: (x: Int)Int
scala> 0 to 10 map { foo }
res10: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 2, 1, 7, 6, 5, 1, 6, 0, 7, 4)
But comments on this or suggestions of recommended Scala-way to do this would be appreciated.
scala for-comprehension
scala for-comprehension
edited Jan 1 at 22:09
Alok Lal
asked Jan 1 at 22:03
Alok LalAlok Lal
6018
6018
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
The Int => ?
in the error message means than the compiler expects to see a function from Int
to some other type (?
). But Random.nextInt(10)
is not a function, it's just an Int
. You have to take an integer parameter:
0 to 10 map { i => Random.nextInt(10) }
You can also explicitly ignore the argument:
0 to 10 map { _ => Random.nextInt(10) }
or, even better, just use fill
:
Vector.fill(10){ Random.nextInt(10) }
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53999293%2fproblem-in-converting-from-for-comprehension-to-map%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The Int => ?
in the error message means than the compiler expects to see a function from Int
to some other type (?
). But Random.nextInt(10)
is not a function, it's just an Int
. You have to take an integer parameter:
0 to 10 map { i => Random.nextInt(10) }
You can also explicitly ignore the argument:
0 to 10 map { _ => Random.nextInt(10) }
or, even better, just use fill
:
Vector.fill(10){ Random.nextInt(10) }
add a comment |
The Int => ?
in the error message means than the compiler expects to see a function from Int
to some other type (?
). But Random.nextInt(10)
is not a function, it's just an Int
. You have to take an integer parameter:
0 to 10 map { i => Random.nextInt(10) }
You can also explicitly ignore the argument:
0 to 10 map { _ => Random.nextInt(10) }
or, even better, just use fill
:
Vector.fill(10){ Random.nextInt(10) }
add a comment |
The Int => ?
in the error message means than the compiler expects to see a function from Int
to some other type (?
). But Random.nextInt(10)
is not a function, it's just an Int
. You have to take an integer parameter:
0 to 10 map { i => Random.nextInt(10) }
You can also explicitly ignore the argument:
0 to 10 map { _ => Random.nextInt(10) }
or, even better, just use fill
:
Vector.fill(10){ Random.nextInt(10) }
The Int => ?
in the error message means than the compiler expects to see a function from Int
to some other type (?
). But Random.nextInt(10)
is not a function, it's just an Int
. You have to take an integer parameter:
0 to 10 map { i => Random.nextInt(10) }
You can also explicitly ignore the argument:
0 to 10 map { _ => Random.nextInt(10) }
or, even better, just use fill
:
Vector.fill(10){ Random.nextInt(10) }
answered Jan 1 at 22:09
Andrey TyukinAndrey Tyukin
29.4k42351
29.4k42351
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53999293%2fproblem-in-converting-from-for-comprehension-to-map%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown