问题: 把 文本字符串"[1, 2, 3, 4, 5]" 转换成一个数组。
答案:
val x = "[1, 2, 3, 4, 5]"
val y =x slice(1, x.length-1) replace(",","") split(" ")
var y1= x slice(1, x.length-1) replace(",","") split(" ") map(_.toInt)
y1: Array[Int] = Array(1, 2, 3, 4, 5)
或者写成
var y1= x.slice(1, x.length-1).replace(",","").split(" ").map(_.toInt)
或者
val y:Array[Int]= x slice(1, x.length-1) replace(",","") split(" ") map(_.toInt)
scala鼓励程序员用val声明变量,val实际上是一个常量,无法修改内容。 var声明变量, 可以修改。
不需要给出值或者变量的类型, 因为类型可以从初始化, 或者赋值的表达式里推断出来。
如果指定值或者变量的类型,会执行类型检查, 要求赋值表达式两边的类型要匹配。 例如下面的例子, 赋值会失败,因为类型不匹配。
val y:Array[Int]= x slice(1, x.length-1) replace(",","") split(" ")
<console>:37: error: type mismatch;
found : Array[String]
required: Array[Int]
val y:Array[Int]= x slice(1, x.length-1) replace(",","") split(" ")
类型转换问题:
以上对数组进行类型转换用的是map(_.toInt)
对单个字符串转换的例子是 “1”.toInt, 这里toInt不用加括号。
有意思的是数字转成字符串的时候,1.toString, 1.toString()都是可以的.
在scala中, 类型转化用的都是方法, 而不是强制类型转换.
Int 转成Long 是使用 testInt.toLong而不可以像C++和jaiva里用到的(Long)testInt
关于函数调用问题:
上面例子里 x.slice(1, x.length-1), 也可以用 x slice(1, x.length-1)
scala里调用一个函数可以用
a 方法 b
也可以用
a.方法(b) 用.来引用方法的时候, 必须用括号
还可以
a 方法(b)用空格来引用方法的时候, 且如果只有一个参数,不一定用括号。 上面的写法还可以是
val y =x slice(1, x.length-1) replace(",","") split " "
如果是么有参数的函数, 调用的时候不需要加() , 例如 1.toString()
和java不一样, scala支持重写运算符。 scala有一个伴生对象apply方法, 是不需要显示的写出函数名的。 它是Scala中构建对象的常用方法。 例如
Array(1,4,5,16)返回一个数组用的就是Array伴生对象的apply方法, 看上去类似于构造函数, 但其实不完全是。
再比如"Hello"(4)返回‘o’, 实际上是在调用StringOps类中的def apply(n:Int): Char 方法。
Scala学习笔记2 (带着问题学习, 逐渐扩展。理解吃透scala.)的更多相关文章
-
《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
-
openresty 学习笔记番外篇:python的一些扩展库
openresty 学习笔记番外篇:python的一些扩展库 要写一个可以使用的python程序还需要比如日志输出,读取配置文件,作为守护进程运行等 读取配置文件 使用自带的ConfigParser模 ...
-
20145213《Java程序设计学习笔记》第六周学习总结
20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...
-
Hadoop学习笔记(10) ——搭建源码学习环境
Hadoop学习笔记(10) ——搭建源码学习环境 上一章中,我们对整个hadoop的目录及源码目录有了一个初步的了解,接下来计划深入学习一下这头神象作品了.但是看代码用什么,难不成gedit?,单步 ...
-
20145230《java学习笔记》第七周学习总结
20145230 <Java程序设计>第7周学习总结 教材学习内容 Lambda语法概览 我们在许多地方都会有按字符串长度排序的需求,如果在同一个方法内,我们可以使用一个byName局部变 ...
-
【学习笔记】jQuery的基础学习
[学习笔记]jQuery的基础学习 新建 模板 小书匠 什么是jQuery对象? jQuery 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果 ...
-
【学习笔记】JavaScript的基础学习
[学习笔记]JavaScript的基础学习 一 变量 1 变量命名规则 Camel 标记法 首字母是小写的,接下来的字母都以大写字符开头.例如: var myTestValue = 0, mySeco ...
-
.NET学习笔记(1)— C#学习路线图
目录 一:引言 二:.NET技术体系 三:常用工具汇总 四:学习资源汇总 五:书籍推荐 六:关于阅读技术书籍的经验 七:总结 一:引言 因为工作调整,从PHP开发零基础转型到.NET开发,前期没有 ...
-
Deep Q-Network 学习笔记(一)—— Q-Learning 学习与实现过程中碰到的一些坑
这方面的资料比较零散,学起来各种碰壁,碰到各种问题,这里就做下学习记录. 参考资料: https://morvanzhou.github.io/ 非常感谢莫烦老师的教程 http://mnemstud ...
-
Java学习笔记16---抽象类与接口的浅显理解
抽象类是由abstract修饰的类,定义方式如public abstract class A{...}. 接口由interface修饰,定义方式如public interface B{...}. 抽象 ...
随机推荐
-
Java this关键字
this 关键字有三个应用: 1.this调用本类中的属性,也就是类中的成员变量 2.this调用本类中的其他方法 3.this调用本类中的其他构造方法,调用时要放在构造方法的首行 来看下面这段代码: ...
-
在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程
http://jijiaa12345.iteye.com/blog/1739754 在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程 本文是一篇在Myeclipse下构建Jav ...
-
无法启动T-SQL 调试
问题详情 解决办法 1.要在服务器本机,不要远程 2.用实例名,不要用.或者local 3.以Windows身份验证的administrator或者sqlserver身份验证的sa登录
-
linux缓冲的概念fopen /open,read/write和fread/fwrite区别
fopen /open区别 UNIX环境下的C 对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write这里简单的介绍一下他们的区别.1 ...
-
VS辅助工具
tfs签入策略修改工具Team Foundation Server 2015 Power Tools(tfpt) 添加签入禁止策略 \*/bin \*/obj \*/Release \*/Debug ...
-
在脚本中使用source命令不生效
问题描述 1. 一次写自动化安装脚本,要安装java,需要将JAVA_HOME写到/etc/profile中,然后使用source命令,但是发现profile文件中确实有JAVA_HOME,使用 ...
-
studio多渠道打包
由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这事就简单了. 友盟多渠道打包 废话 ...
-
base编码解码
function b64EncodeUnicode(str) { return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, func ...
-
mysql创建数据库命令
CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-
Hbase和Oracle的对比
转自:http://www.cnblogs.com/chay1227/archive/2013/03/17/2964020.html 转自:http://blog.csdn.net/allen879/ ...