当我编码时,我经常需要比较两个字符串。我知道如果tryIOError
是isEOFError
,则调用-- get string from stdin
getFrmStdIn :: Int -> IO String
getFrmStdIn timeout = do
inAvail <- tryIOError $ hWaitForInput stdin timeout
let tOut = either (const False) id inAvail
if isLeft inAvail
then return []
else
if not tOut
then die "00 timed out"
else
(:) <$> hGetChar stdin <*> getFrmStdIn timeout
会引发java.lang.NullPointerException
,所以我总是这样做:
list.map{x => x.size}.sum
这导致有许多方法始终包含string.equals()
是否为String
的条件。
我希望避免这种重复而不会抛出错误,是否可能?
答案 0 :(得分:15)
是的,这是可能的。只是做:
if ("something".equals(string)) {
// Do something
}
由于调用Object
的{{1}}不是equals()
,因此会阻止投放java.lang.NullPointerException
。