scala 系列20190202

栏目: Scala · 发布时间: 5年前

内容简介:今天看到一篇关于 scala 入门基础的提问点,我呢,就在这里简单做一下释疑,纯粹是为了抛砖引玉,特别期待各位同行的不吝赐教我先来贴一下原帖的提问点:我们一条一条来看一下:

今天看到一篇关于 scala 入门基础的提问点,我呢,就在这里简单做一下释疑,纯粹是为了抛砖引玉,特别期待各位同行的不吝赐教

我先来贴一下原帖的提问点:

  • 1、一个数字如果是正数,则它的 signum 为1;如果是负数,则 signum 为 -1;如果是0,则 signum 为0.编写一个函数来计算这个值
  • 2、一个空的块表达式{} 的值是什么?类型是什么?
  • 3、指出在 Scala 中何种情况下赋值语句 x=y=1 是合法的。(提示:给 x 找个合适的类型定义)
  • 4、针对下列 Java 循环编写一个 Scala 版 for(int i =10; i >= 0; i--) System.out.println(i);
  • 5、编写一个过程 countdown(n: Int),打印从 n 到 0 的数字
  • 6、编写一个 for 循环,计算字符串中所有字母的 Unicode 代码的乘积。举例来说,“Hello” 中所有字符的乘积为 9415087488L
  • 7、同样是解决前一个练习的问题,但这次不使用循环(提示:在 Scaladoc 中查看 StringOps)
  • 8、编写一个函数 product(s: String),计算前面练习中提到的乘积
  • 9、把前一个练习中的函数改成递归函数
  • 10、编写函数计算 x^n,其中 n 是整数,使用如下的递归定义:
    x^n = y^2,如果 n 是正偶数的话,这里的 y = x^(n/2);
    x^n = x*x^(n-1),如果 n 是正奇数的话;
    x^0 =1;x^n = 1/x^(-n),如果 n 是负数的话;不得使用 return 语句

我们一条一条来看一下:

  1. 这第一题我没大明白什么是 signum,所以这个先放下,留给各位同行大神来解答喽,刚好也给我讲讲哦,哈哈哈
  2. scala 系列20190202
  3. 首先我们知道,x=y=1 这是肯定不对的,因为它实际上是这样解析的 x=(y=1),而 y=1 是赋值语句,其返回值是 Unit,所以就相当于是将一个 Unit 赋给 x 了,但是文中又提示给 x 找个合适的类型定义,因此我们只需要将 x 给声明为 var 类型即可 var y = 0; var x = y = 1;
  4. 这个嘛就比较简单了 for( i <- 0 to 10 ) println(i);
  5. 首先要说明一下什么是过程,它与函数有什么区别?

在 scala 中对于不返回值的函数有特殊的表示法,如果函数体包含在花括号当中,但是没有前面的 = 号,那么返回类型就是 Unit,这样的函数就被称为过程(procedure),过程不返回值,我们调用它仅仅是为了它的副作用

由于过程不返回任何值,所以我们可以省略 = 号

所以知道了这一点后,我们再来实现题中的要求

def coutdown(n : Int){
    for( i <- (n + 1) until(0,-1)) println(i);
}

注意这里不要写成 for(i <- 0 to 10) ,这样并不符合题意

  1. 这道题也是有一个陷阱的,就是在声明 s 的时候一定要声明为 Long 型,只要知道这一点后,就比较简单了
def countUnicodeMutiple(str : String) = {
    var s : Long = 1;
    for(i <- str){
      s *= i.toInt;
      println(s);
    }
  }

然后调用即可

后三道题我先放下,公司今天(2019年2月2日 16:39:45)走的都没人了,数我离家最远,属我最后一个离开,哎,我也写不下去了,要收拾收拾回家了(好难受,喜欢公司里的一个女的,但是人家特别讨厌我;不说了,明年见)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

An Introduction to the Analysis of Algorithms

An Introduction to the Analysis of Algorithms

Robert Sedgewick、Philippe Flajolet / Addison-Wesley Professional / 1995-12-10 / CAD 67.99

This book is a thorough overview of the primary techniques and models used in the mathematical analysis of algorithms. The first half of the book draws upon classical mathematical material from discre......一起来看看 《An Introduction to the Analysis of Algorithms》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具