小编tra*_*ard的帖子

SimpleDateFormat中的可选部分

我正在读日期字符串,可能有或没有时区调整:yyyyMMddHHmmsszyyyyMMddHHmmss.当一个字符串缺少一个区域时,我将其视为GMT.我没有看到任何方式在a中创建可选部分SimpleDateFormat,但也许我错过了一些东西.有没有办法用a做这个SimpleDateFormat,或者我应该写一个新的具体DateFormat来处理这个?

java datetime localization simpledateformat

40
推荐指数
3
解决办法
3万
查看次数

在Scala中返回一个懒惰的val

我有一个看起来像这样的函数:

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,以便客户端代码可以将其视为值而不是函数?

scala lazy-evaluation

5
推荐指数
1
解决办法
1391
查看次数

NaN导致Haskell中的大量距离,仅在功能评估中

我似乎有一个距离公式,直接运行时工作正常,但不是作为一个函数运行时.我有:

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,找到这个!)

haskell numbers

1
推荐指数
1
解决办法
153
查看次数