如何在scala中增加字符

时间:2013-12-28 11:45:29

标签: scala

我正在编写一个代码来打印所有字符及其ascii值,从'a'到'z'。

使用以下代码段,我可以执行此操作。

var c = 'a'
while(c < 'z'){
    println(c +" = " + c.toInt)
    var p = c.toInt
    p += 1
    c = p.toChar
}

但是当我做跟随时(比如c)

var c = 'a'
while(c < 'z'){
    println(c +" = " + c.toInt)
    c += 1 // or c = c + 1.toChar
}

它给了我以下错误

 found   : Int
 required: Char

有没有更好的方法来增加scala中的字符。

谢谢,
山塔努

5 个答案:

答案 0 :(得分:5)

根据要求,这里还有另一个选项来自评论:

('a' to 'z').map(_.toInt).foreach(println)

答案 1 :(得分:4)

在Scala中,您可以使用表达式Range

创建一个可迭代的'a' to 'z'
('a' to 'z').foreach(println)

Try it

答案 2 :(得分:1)

另一种观点是使用Streams。除了更模块化(你可以继续conting,映射它等),它可以证明非常有效地懒惰地计算东西。在这种情况下,它是不相关的。但是我应该去读考试,所以我不得不花费大量的时间来度过一段时间......

  val s = Stream.from('a').map(_.toChar)
  s.take(26).force
> Stream(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z)

或作为单线

Stream.from('a').map(_.toChar).take(26).force

或有条件

Stream.from('a').map(_.toChar).takeWhile(_ <= 'z').force

这个例子可以在这里看到:http://www.scalakata.com/52bec5a5e4b0b1a1c4dc0402(不错的工具顺便说一下,谢谢@theon!)

答案 3 :(得分:1)

这应该有效:

var c = 'a'
while(c < 'z'){
  println(c +" = " + c.toInt)
  c = (c + 1).toChar
}

但这是对var的一种可怕的使用,但我建议其他解决方案之一。

答案 4 :(得分:0)

这并不像@ theon的回答那么棒,但这里是一个for-comprehension版本:

scala> for(i <- 'a' to 'z') print(i.toString + ' ')
a b c d e f g h i j k l m n o p q r s t u v w x y z