我读了几个问题,比如Scala和Haskell讨论两种语言的优点或者要学习哪些,但我已经知道我想学习Scala.我是uni的Java程序员,现在主要使用PHP.
我想学习Scala,因为它看起来像个人项目的Java改进,我也想学习一种函数式语言来提高我作为程序员的知识.
我想知道将Haskell作为函数式编程的介绍是否是一个好主意,因为它纯粹是函数式的,所以我应该正确地学习它而不是偶然使用Scala中的一些函数而不知道为什么?
我也喜欢将Haskell用于个人项目等,因为它看起来很棒,但我并没有真正看到它的许多真实应用,似乎更多地用于学术事物,因此想要学习它以获得功能性理解然后继续斯卡拉
我刚刚开始阅读有关scala的教程并且遇到了阻塞.我已经将几个示例合并在一起并且收到错误,但不知道为什么.
import java.text.DateFormat._
import java.util.{Date, Locale}
object FrenchDate {
def main(args: Array[String]) {
timer(println(frenchDate))
}
def frenchDate():String = {
val now = new Date
val df = getDateInstance(LONG, Locale.FRANCE)
df format now
}
def timer(callback: () => Unit) {
while(true) {callback(); Thread sleep 1000}
}
}
Run Code Online (Sandbox Code Playgroud)
带来错误
error: type mismatch;
found : Unit
required: () => Unit
println(frenchDate)
Run Code Online (Sandbox Code Playgroud)
而以下工作
import java.text.DateFormat._
import java.util.{Date, Locale}
object FrenchDate {
def main(args: Array[String]) {
timer(frenchDate)
}
def frenchDate() {
val now = new …Run Code Online (Sandbox Code Playgroud) 使用此代码示例
#!/usr/bin/ruby
paragraph = "champion xylophone excellent"
paragraph = paragraph.gsub("ch","tj")
words = paragraph.split(/ /)
words.each do |word|
if word[0,1] == "x"
word[0.1] = "z"
end
end
paragraph = words.join(" ")
paragraph.gsub("x","ks")
print paragraph
Run Code Online (Sandbox Code Playgroud)
输出将是'tjampion zylophone excellent'而不是'tjampion zylophone ekscellent'
如果将gsub应用于各个单词中,则同样适用.我不明白为什么它在开始时起作用而不是在最后起作用.
编辑
第二种情况与第一种情况截然不同:
#!/usr/bin/ruby
paragraph = "champion xylophone excellent"
paragraph = paragraph.gsub("ch","tj")
words = paragraph.split(/ /)
words.each do |word|
if word[0,1] == "x"
word[0.1] = "z"
end
word = word.gsub("x","ks")
end
paragraph = words.join(" ")
print paragraph
Run Code Online (Sandbox Code Playgroud)