小编mrl*_*lee的帖子

Ruby中的字符串连接与插值

我刚开始学习Ruby(第一次编程),并且有一个关于变量的基本语法问题,以及编写代码的各种方法.

克里斯派恩的"学会编程"教会我写一个像这样的基本程序......

num_cars_again= 2
puts 'I own ' + num_cars_again.to_s + ' cars.'
Run Code Online (Sandbox Code Playgroud)

这很好,但后来我偶然发现了ruby.learncodethehardway.com上的教程,并被教导写出像这样的精确程序......

num_cars= 2
puts "I own #{num_cars} cars."
Run Code Online (Sandbox Code Playgroud)

它们都输出相同的东西,但显然选项2是一个更短的方法.

是否有任何特殊原因我应该使用一种格式而不是另一种格式?

ruby string-concatenation string-interpolation

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

在Servant中的API端点内发出请求

我正在尝试使用telegram-api构建Telegram机器人.到目前为止,我还没有遇到任何问题,因为我可以阅读测试以了解事情是如何工作的,但是在使用Servant构建webhook端点时我遇到了很多麻烦.总的想法是,当我Update从webhook 收到一个,我发回一个回复.

问题在于我的postWebhook代码,它希望收到一个Message但是收到一个IO Message.我认为这是因为Servant不希望我在该函数内部发出请求,因为我确实应该有类型EitherT ServantError IO (IO Message)(部分应用BotHandler)EitherT ServantError IO Message.

我还在学习Haskell,但我知道我不得不从IO monad中获取消息?更新BotAPI返回a Post '[JSON] (IO Message)给我这个:No instance for (Foldable IO) arising from a use of ‘serve’,这超出了我的初学者的知识,我可以看到摆弄类型只是将相同的问题移动到代码的不同部分.我只是不知道如何解决它.

以下是删除了敏感字符串的代码:

{-# LANGUAGE DataKinds         #-}
{-# LANGUAGE DeriveAnyClass    #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeOperators     #-}

module Main where

import           Control.Monad
import           Control.Monad.Trans.Either
import           Data.Proxy
import           Data.Text                  (Text, pack) …
Run Code Online (Sandbox Code Playgroud)

haskell servant

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