Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 953685
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 16, 20262026-05-16T00:05:25+00:00 2026-05-16T00:05:25+00:00

Let’s say I have a function like this (it’s only an example, so do

  • 0

Let’s say I have a function like this (it’s only an example, so do not offer me better ways to create 0,1,2,… style array):

def createArray(size: Int): Array[Int] = {
  for (i <- 0 until size) yield i
}

But the compiler get upset with some mysterious type mismatch error:

(fragment of compare-images.scala):39: error: type mismatch;
 found   : RandomAccessSeq.Projection[Int]
 required: Array[Int]
      for (i <- 0 until size) yield i
            ^
one error found
!!!
discarding <script preamble>

I’m sure, the reason has something to do with the fact that until method’s return type is Range, not Array. Yet, why the compiler can’t just cast the types?
Interestingly the problem goes away when I remove the return type of my function:

def createArray(size: Int) = {
  for (i <- 0 until size) yield i
}

But I want my function to return Array…

I also have another function, which goes like this:

def screateArray2: Array[Int] = {
  val a = Array(1,2,3,4,5)
  for (i <- a) yield i
}

It compiles without any problems. It yields values very similarly to the first example, but doesn’t use until method…

Am I missing something about Scala’s type system?

I’m quite new to Scala.

EDIT: I sort of solved my problem like this:

def crop(data: Array[Int]): Array[Int] = (
  for (i <- 0 until data.size) yield i
).toArray

But in my view it’s anything but readable…

  • 1 1 Answer
  • 2 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-16T00:05:26+00:00Added an answer on May 16, 2026 at 12:05 am

    You can’t cast the types just because an Array is not a Range, nor a superclass of it. I think their most common supertype would be IndexedSeq. So your example would be similar to a method which you declare to return an Int, while the implementation would return a String, for instance. Range does have a toArray method, however, so if you want to use the until style and return an Array, you can do it like this:

    
    scala> (for (i <- 0 until 5) yield i).toArray
    res0: Array[Int] = Array(0, 1, 2, 3, 4)
    

    or, if do don’t like this, there’s another way, but that doesn’t use the until style:

    
    scala> for (i <- Array.range(0,5)) yield i          
    res1: Array[Int] = Array(0, 1, 2, 3, 4)
    

    Also, check this related question for returning custom types from a for comprehension

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Let's say I have a sortable list like this: $(.song-list).sortable({ handle : '.pos_handle', axis
Let's say I have a string like this: var str = /abcd/efgh/ijkl/xxx-1/xxx-2; How do
Let's say I have a text file composed like this ##### typeofthread1 ##### typeofthread2
I have a string like this: La Torre Eiffel paragonata all&#8217;Everest What PHP function
Let's say I have table with column 'URL' whrere I store urls like this
Let's say that I have a set of relations that looks like this: relations
Let's say I have some json like this in mongo: {n:5} and a java
Let's have an example like below: package xliiv.sandbox; import android.app.Activity; import android.os.Bundle; import android.util.Log;
Let me explain best with an example. Say you have node class that can
Let me try to explain by example. Say website is hosted at example.com (NOT

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.