由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 读scala的程序就象读文言文
相关主题
FP in Scala掉下来了吧问一下,scala之父的那本教程怎么样?值得看么?
scala for impatient 还是 Programming in Scala 作为第一部书学习好?这里有用Julia 的吗?
Python有没有用文件方式保存中间变量的方便方法?谁知道这个嵌套的Python if 是啥意思?
Java is back请教各位高手们PHP和Python是否和Ruby一样有Scalability的问题 (转载)
阅读scala中python很好么?
求scala入门关于python
有因为Spark而学习Scala的吗?python象C/C++, ruby象java
关于scala的level我认为JVM上的语言,老大还是Java
相关话题的讨论汇总
话题: list话题: scala话题: arr话题: python话题: int
进入Programming版参与讨论
1 (共1页)
B***i
发帖数: 724
1
有人有同感吗?
g*****g
发帖数: 34805
2
It's not that bad once you get used to the syntax. But it's certainly harder
to read than Java.

【在 B***i 的大作中提到】
: 有人有同感吗?
p*****2
发帖数: 21240
3

harder
比java好读多了吧?

【在 g*****g 的大作中提到】
: It's not that bad once you get used to the syntax. But it's certainly harder
: to read than Java.

p*****2
发帖数: 21240
4

大牛在学scala吗?

【在 B***i 的大作中提到】
: 有人有同感吗?
B***i
发帖数: 724
5
不是大牛。
用scala 用了好一段时间了。但是还是觉得不好读, 不好写。 原来用java, python
写个小程序很容易, 换成scala 就难受得很。

【在 p*****2 的大作中提到】
:
: 大牛在学scala吗?

B***i
发帖数: 724
6
举个例子, 如果我有个一文件, 想找到第二个注释行 (假设注释行第一个字符都是#)
, 用python 就很容易
count = 0
f = open(filename)
line = f.readline()
while line:
if line.startswith("#"):
count += 1
if count >= 2:
return line
line = f.readline()
谁能帮我写个 scala得程序? 当然有 "functional programming"得风格最好了。
如果这个文件超级大的话, 不知道效率如何?
p*****2
发帖数: 21240
7

#)
没看出来python这个坡语言有什么容易的。
Scala:
Source.fromFile("input.txt").getLines.filter(i=>i.startsWith("#")).toList(1)

【在 B***i 的大作中提到】
: 举个例子, 如果我有个一文件, 想找到第二个注释行 (假设注释行第一个字符都是#)
: , 用python 就很容易
: count = 0
: f = open(filename)
: line = f.readline()
: while line:
: if line.startswith("#"):
: count += 1
: if count >= 2:
: return line

n*w
发帖数: 3393
8
临时学的
scala.io.Source.fromPath("myfile.txt").getLines().filter(line => line.
StartWith("#")) slice (2, 2)
B***i
发帖数: 724
9
这个 getLines() 是不是要把所有的line全部读进来?

【在 n*w 的大作中提到】
: 临时学的
: scala.io.Source.fromPath("myfile.txt").getLines().filter(line => line.
: StartWith("#")) slice (2, 2)

n*w
发帖数: 3393
10
The answer should be no since get lines returns an iterator.
Don't convert it to an array.

【在 B***i 的大作中提到】
: 这个 getLines() 是不是要把所有的line全部读进来?
相关主题
求scala入门问一下,scala之父的那本教程怎么样?值得看么?
有因为Spark而学习Scala的吗?这里有用Julia 的吗?
关于scala的level谁知道这个嵌套的Python if 是啥意思?
进入Programming版参与讨论
w******p
发帖数: 166
11
i don't think python should be judged because of this example, otherwise
bash and its friends may look even better, and it's also only reading as
much of the file as necessary:
$ grep -m2 "^#" file | tail -1
N********n
发帖数: 8363
12

PYTHON不至于这么面吧,居然要写这么多行CODE.

【在 B***i 的大作中提到】
: 举个例子, 如果我有个一文件, 想找到第二个注释行 (假设注释行第一个字符都是#)
: , 用python 就很容易
: count = 0
: f = open(filename)
: line = f.readline()
: while line:
: if line.startswith("#"):
: count += 1
: if count >= 2:
: return line

B***i
发帖数: 724
13
感谢大家的回复。 我其实不应该说python 简单的。 我其实原来想说的是python容易
读, 象大白话。 scala 写出来的东西很精炼, 但是象文言文, 很难读。
感谢nkw, 现在对scala 明白多了一些。
还有一个例子, 继续前面的的例子,假设每行都是一个数字, 要找出第二个和前一行
相同的数字。 比如说
2
3
3 <- 第一个和前行相同的数字
4
4 <- 第二个和前行相同的数字
5
2
5
5 <- 第三个和前行相同的数字
用python等过程语言就很容易。 大白话, 谁都会,啰嗦一点就是了。
用functional programming 风格的程序就让我费老鼻子劲了(还带bug,)
List(0,1,2,3,3,4,4,5,6).scanLeft((0, 0)) {
(pre, next) =>
if (pre._1 == next)
(next, pre._2 + 1)
else
(next, pre._2)
}
.filter{ _._2 == 2}
.head
如果要求是第二个和前面倒数第二个(隔行)相同的呢?我已经跪了。
1
3 *
2
3 <- 第一个和前隔行相同的数字
4
5
4 <- 第二个和前隔行相同的数字
5
2
5 <- 第三个和前隔行相同的数字
g*****g
发帖数: 34805
14
You can't compare it to script. grep is a function call to begin with.

【在 w******p 的大作中提到】
: i don't think python should be judged because of this example, otherwise
: bash and its friends may look even better, and it's also only reading as
: much of the file as necessary:
: $ grep -m2 "^#" file | tail -1

p*****2
发帖数: 21240
15

list=for(i<-1 until arr.length if arr(i)==arr(i-1)) yield arr(i)

【在 B***i 的大作中提到】
: 感谢大家的回复。 我其实不应该说python 简单的。 我其实原来想说的是python容易
: 读, 象大白话。 scala 写出来的东西很精炼, 但是象文言文, 很难读。
: 感谢nkw, 现在对scala 明白多了一些。
: 还有一个例子, 继续前面的的例子,假设每行都是一个数字, 要找出第二个和前一行
: 相同的数字。 比如说
: 2
: 3
: 3 <- 第一个和前行相同的数字
: 4
: 4 <- 第二个和前行相同的数字

h***t
发帖数: 2540
16
你这个Python写的真烂,有那么多行吗? 感觉你是把C++或者Java翻译了

#)

【在 B***i 的大作中提到】
: 举个例子, 如果我有个一文件, 想找到第二个注释行 (假设注释行第一个字符都是#)
: , 用python 就很容易
: count = 0
: f = open(filename)
: line = f.readline()
: while line:
: if line.startswith("#"):
: count += 1
: if count >= 2:
: return line

p*****2
发帖数: 21240
17

嗯。感觉LZ还需要多多练习。

【在 h***t 的大作中提到】
: 你这个Python写的真烂,有那么多行吗? 感觉你是把C++或者Java翻译了
:
: #)

B***i
发帖数: 724
18
如果想只返回第一个满足条件的而不想遍历整个数组呢?

【在 p*****2 的大作中提到】
:
: 嗯。感觉LZ还需要多多练习。

B***i
发帖数: 724
19
谢谢指教。 正在学习中

【在 p*****2 的大作中提到】
:
: 嗯。感觉LZ还需要多多练习。

l*******b
发帖数: 2586
20
试了下这个, 你看看好用不
def rep(l: List[Int]): Int = l match {
case x :: y :: z => if(x == y) x else rep(y :: z)
case _ => -1
}
rep(List(1,2,2,4,4,5))

【在 B***i 的大作中提到】
: 谢谢指教。 正在学习中
相关主题
请教各位高手们PHP和Python是否和Ruby一样有Scalability的问题 (转载)python象C/C++, ruby象java
python很好么?我认为JVM上的语言,老大还是Java
关于pythonPython和perl都属于那种很难精通的语言
进入Programming版参与讨论
l*******b
发帖数: 2586
21
再来个这个
val c = List(1,2,2,3,3,4)
c.sliding(2).find(c => c(0) == c(1))
res28: Option[List[Int]] = Some(List(2,2))

【在 l*******b 的大作中提到】
: 试了下这个, 你看看好用不
: def rep(l: List[Int]): Int = l match {
: case x :: y :: z => if(x == y) x else rep(y :: z)
: case _ => -1
: }
: rep(List(1,2,2,4,4,5))

B***i
发帖数: 724
22
谢谢。 这个解法很好。 不过好像find () 是找满足条件第一个的? 如果要找第二个
的呢?
而且正符合我的看法。 scala 写起来短小精悍, 那是使用了预先定义好了很多idiom.
比如这里的sliding.

【在 l*******b 的大作中提到】
: 再来个这个
: val c = List(1,2,2,3,3,4)
: c.sliding(2).find(c => c(0) == c(1))
: res28: Option[List[Int]] = Some(List(2,2))

B***i
发帖数: 724
23
这个能帮解释一下吗? 特别是 match { case x :: y :: z 这句

【在 l*******b 的大作中提到】
: 试了下这个, 你看看好用不
: def rep(l: List[Int]): Int = l match {
: case x :: y :: z => if(x == y) x else rep(y :: z)
: case _ => -1
: }
: rep(List(1,2,2,4,4,5))

p*****2
发帖数: 21240
24

val arr=Array(2,3,3,4,4,5,2,5,5)
arr((1 until arr.length).find(i=>arr(i)==arr(i-1)).get)

【在 B***i 的大作中提到】
: 如果想只返回第一个满足条件的而不想遍历整个数组呢?
p*****2
发帖数: 21240
25

就是把list分成三部分
x=l(1)
y=l(2)
z=其他的

【在 B***i 的大作中提到】
: 这个能帮解释一下吗? 特别是 match { case x :: y :: z 这句
B***i
发帖数: 724
26
真是太奥妙了。 加个 .get就取下一个吗? 越来越感觉象文言文了。被之乎者也搞晕了

【在 p*****2 的大作中提到】
:
: 就是把list分成三部分
: x=l(1)
: y=l(2)
: z=其他的

p*****2
发帖数: 21240
27
你看看impatient那本书吧

【在 B***i 的大作中提到】
: 真是太奥妙了。 加个 .get就取下一个吗? 越来越感觉象文言文了。被之乎者也搞晕了
B***i
发帖数: 724
28
好, 我去找找.谢谢。

【在 p*****2 的大作中提到】
: 你看看impatient那本书吧
n******t
发帖数: 4406
29
这也叫短小精干啊。。

idiom.

【在 B***i 的大作中提到】
: 谢谢。 这个解法很好。 不过好像find () 是找满足条件第一个的? 如果要找第二个
: 的呢?
: 而且正符合我的看法。 scala 写起来短小精悍, 那是使用了预先定义好了很多idiom.
: 比如这里的sliding.

1 (共1页)
进入Programming版参与讨论
相关主题
我认为JVM上的语言,老大还是Java阅读scala中
Python和perl都属于那种很难精通的语言求scala入门
groovy整个就是一个better python有因为Spark而学习Scala的吗?
Scala这次又被比下去了关于scala的level
FP in Scala掉下来了吧问一下,scala之父的那本教程怎么样?值得看么?
scala for impatient 还是 Programming in Scala 作为第一部书学习好?这里有用Julia 的吗?
Python有没有用文件方式保存中间变量的方便方法?谁知道这个嵌套的Python if 是啥意思?
Java is back请教各位高手们PHP和Python是否和Ruby一样有Scalability的问题 (转载)
相关话题的讨论汇总
话题: list话题: scala话题: arr话题: python话题: int