我正在读日期字符串,可能有或没有时区调整:yyyyMMddHHmmssz
或yyyyMMddHHmmss
.当一个字符串缺少一个区域时,我将其视为GMT.我没有看到任何方式在a中创建可选部分SimpleDateFormat
,但也许我错过了一些东西.有没有办法用a做这个SimpleDateFormat
,或者我应该写一个新的具体DateFormat
来处理这个?
我有一个看起来像这样的函数:
package org.thimblr.io
import java.io._
object Local {
def streamer(path: String) = () => new FileReader(path)
}
Run Code Online (Sandbox Code Playgroud)
这基本上管理我想要做的事情,即返回一个在调用时从文件中打开流的函数.所以客户端代码可以这样做:
val planStreamSource = Local.streamer("/home/someuser/.plan")
//...passes the function on to somewhere else
val planStream = planStreamSource()
val firstByte = planStream.read
//can now read from planStream
Run Code Online (Sandbox Code Playgroud)
但我真正喜欢的是返回一个lazy val,它在引用后从文件中流出,如下所示:
val planStream = Local.streamer("/home/someuser/.plan")
//...passes the val on to somewhere else, without opening the file for reading yet
val firstByte=planStream.read
//...such that planStream was only just opened to allow the read
Run Code Online (Sandbox Code Playgroud)
是否有可能做这样的事情,返回一个懒惰的val,以便客户端代码可以将其视为值而不是函数?
我似乎有一个距离公式,直接运行时工作正常,但不是作为一个函数运行时.我有:
data Point = Point Int Int
deriving (Ord, Eq, Show)
distance :: Point -> Point -> Double
distance (Point x1 y1) (Point x2 y2) =
sqrt $ fromIntegral $ ((x2 - x1) ^ 2) + ((y2 - y1) ^ 2)
Run Code Online (Sandbox Code Playgroud)
distance (Point 0 0) (Point 357356081635 896342957994)
以ghci 运行产生NaN
.但是,替换并直接运行会sqrt $ fromIntegral $ (357356081635 ^ 2) + (896342957994 ^ 2)
产生一个有用的数值结果:9.649528835269391e11
.
为什么?(谢谢,QuickCheck,找到这个!)