我需要序列化一个代理类.该类使用__set和__get在数组中存储值.我希望序列化看起来像是一个扁平的对象.换句话说,我的班级看起来像:
class Proxy
{
public $data = array();
public function __get($name)
{
return $data[$name]
}
}
Run Code Online (Sandbox Code Playgroud)
我想要一个foreach循环来返回$ data中的所有键和值,当我说:
foreach($myProxy as $key)
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我正在尝试从外部向方法添加日志记录(面向方面的样式)
class A
def test
puts "I'm Doing something..."
end
end
class A # with logging!
alias_method :test_orig, :test
def test
puts "Log Message!"
test_orig
end
end
a = A.new
a.test
Run Code Online (Sandbox Code Playgroud)
上面的工作没问题,只是如果我再次需要为方法做别名,它会进入一个无限循环.我想要一些更像super的东西,我可以根据需要多次扩展它,并且每个扩展名都使用别名作为其父级.
我有一个300MB的文件(链接),其中包含utf-8字符.我想写一个相当于的haskell程序:
cat bigfile.txt | grep "^en " | wc -l
Run Code Online (Sandbox Code Playgroud)
这在我的系统上以2.6s运行.
现在,我正在将该文件作为普通字符串(readFile)读取,并具有:
main = do
contents <- readFile "bigfile.txt"
putStrLn $ show $ length $ lines contents
Run Code Online (Sandbox Code Playgroud)
几秒钟后,我收到此错误:
Dictionary.hs: bigfile.txt: hGetContents: invalid argument (Illegal byte sequence)
Run Code Online (Sandbox Code Playgroud)
我想我需要使用更友好的utf-8?如何快速兼容utf-8?我读到了Data.ByteString.Lazy的速度,但Real World Haskell说它不支持utf-8.
假设我有以下类型
type Key = String
type Score = Int
data Thing = Thing Key Score
Run Code Online (Sandbox Code Playgroud)
如果我有这样的数组:
[Thing "a" 7, Thing "b" 5, Thing "a" 10]
Run Code Online (Sandbox Code Playgroud)
是否有一种标准方法来减少这种情况,以便我没有任何重复的密钥?如果两个键匹配,我想获得更好的分数
[Thing "b" 5, Thing "a" 10]
Run Code Online (Sandbox Code Playgroud) 我觉得我应该已经知道了这一点,但是如何fromMaybe在一行中使用而不是将其分成2行let?
main = do
maybePort <- lookupEnv "PORT"
let port = fromMaybe "4020" maybePort
putStrLn $ "Listening on:" ++ port
Run Code Online (Sandbox Code Playgroud) 我正在尝试添加timerep到现有的应用程序.我无法解决我的依赖关系.看起来它正在使用全局安装的版本time == 1.4.2,什么时候>= 1.5才适合我的应用程序.
如何让cabal使用时间1.5?我已经通过unix,tls,process,timerep进行了调查,如果只是使用它们,它们似乎都可以正常工作time >= 1.5.
这是错误:
serials> cabal install --only-dependencies
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: serials-0.1.0.2 (user goal)
trying: mandrill-0.2.2.0 (dependency of serials-0.1.0.2)
trying: http-client-tls-0.2.2 (dependency of mandrill-0.2.2.0)
trying: tls-1.2.17 (dependency of http-client-tls-0.2.2)
trying: x509-validation-1.5.2 (dependency of tls-1.2.17)
trying: process-1.2.0.0/installed-487... (dependency of x509-validation-1.5.2)
next goal: unix (dependency of process-1.2.0.0/installed-487...)
rejecting: unix-2.7.0.1/installed-299... (conflict: unix =>
time==1.4.2/installed-bf9..., serials => time>=1.5)
rejecting: unix-2.7.1.0, 2.7.0.1, 2.7.0.0, 2.6.0.1, 2.6.0.0, 2.5.1.1, 2.5.1.0,
2.5.0.0, …Run Code Online (Sandbox Code Playgroud) 我正在创建一个允许管理员构建表单的应用程序,用户可以填写该表单.问题可以是不同类型的.每种问题都对应于一种响应数据.
是否可以在类型级别对此进行编码?你会如何组织这个?
data QuestionType = EmailText | PlainText | Numeric
-- this doesn't have any response information, it's the metadata
-- about the question itself.
data Question = { id :: ID, label :: Text, questionType :: QuestionType }
data Answer = { questionID :: ID, response :: Response }
-- I would like to map those question types to different response types
data Response = ???
-- EmailText => Text
-- PlainText => Text
-- Numeric => Int
Run Code Online (Sandbox Code Playgroud)
我已经考虑过Type …
我正在尝试设置多个角色,一个用于直播,另一个用于开发.它们看起来像这样:
role :live, "example.com"
role :dev, "dev.example.com"
Run Code Online (Sandbox Code Playgroud)
但是,当我运行cap deploy时,它会为两个服务器执行.我尝试了以下内容,它总是在两者上执行.
cap deploy live
cap ROLE=live deploy
Run Code Online (Sandbox Code Playgroud)
我错过了什么?我知道我可以编写一个只响应一个角色的自定义任务,但我不想编写一大堆任务只是为了告诉它响应一个或另一个角色.谢谢!
我可以使用库函数重写它吗?
chunks :: ([a] -> ([a], [a])) -> [a] -> [[a]]
chunks f [] = []
chunks f xs = case c of
[] -> cs
ys -> ys : cs
where
(c, rest) = f xs
cs = chunks f rest
Run Code Online (Sandbox Code Playgroud)
如果我给它一个span类似于总是从列表中取出一个元素的函数,它将使用列表并返回一个列表,其中包含每次调用函数时断开的元素的子列表.
有没有办法更简洁地写这个?我有很多看起来像这样的功能.它们中的每一个都有一些布尔条件,然后返回一个值或Nothing
rootMiddleware :: Application -> Application
rootMiddleware app req respond =
fromMaybe next . fmap respond $
serveIndex ["questionnaire"] "../app/answer/answer.html" req
<|> serveIndex ["survey"] "../app/builder/builder.html" req
<|> redirect [] "/survey/forms" req
where
next = app req respond
serveIndex :: [Text] -> FilePath -> Request -> Maybe Response
serveIndex prefix fp req =
if prefix `isPrefixOf` pathInfo req
then Just $ responseFile status200 [("Content-Type", "text/html")] fp Nothing
else Nothing
redirect :: [Text] -> ByteString -> Request -> Maybe Response
redirect …Run Code Online (Sandbox Code Playgroud)