有人知道为什么字符串转换函数会在错误="忽略"传递时抛出异常吗?如何在不抛出错误的情况下将常规Python字符串对象转换为unicode?非常感谢!
python -c "import codecs; codecs.open('tmp', 'wb', encoding='utf8', errors='ignore').write('?????')"
Run Code Online (Sandbox Code Playgroud)
返回
Traceback(最近一次调用last):
文件"",第1行,在
文件"/usr/lib/python2.6/codecs.py",第686行,写入
返回self.writer.write(data)
文件"/ usr/lib/python2.6/codecs.py",第351行,写入
数据,消耗= self.encode(object,self.errors)
UnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xd0:序数不是在范围内(128)
编辑 - 感谢您的回复,但有没有人知道如何转换上面的文字,而不是使用"u"前缀?原因是你当然可以处理一些不是常数的东西:)
我想要一些map/remap/nmap/etc. 命令区分大小写,例如"<CI>"与"<Ci>".
我检查了谷歌和:帮助地图,但无法找到这个.
我想将调度宏包装在另一个中以保持清洁.然而,Clojure似乎对待它的方式不同......或许我误解了什么?让我们看一下简单地为别名制作别名的情况#.
这有效:
(defmacro mkDef [x y] `~(list 'def x y))
Run Code Online (Sandbox Code Playgroud)
但这不是:
(defmacro mkDispatch [x] `~(list '# x))
Run Code Online (Sandbox Code Playgroud)
谢谢!!
PS有足够代表的人:请创建一个syntax-macros标签; 我希望能够更好地搜索类似的问题.
什么是正确的序列类型?我有这个代码:
(defrecord MethodInfo [^clojure.lang.ISeq preconds ^clojure.lang.ISeq postconds])
Run Code Online (Sandbox Code Playgroud)
但它似乎没有正确执行类型要求,因为我可以写(new MethodInfo 1 2).
假设我从一个函数开始
fromJust Nothing = error "fromJust got Nothing!"
fromJust (Just x) = x
Run Code Online (Sandbox Code Playgroud)
然后,我想通过Template Haskell添加源信息以获得更好的错误消息.让我们想象一下,我可以在函数中添加一个额外的参数
fromJust' loc Nothing = error $ "fromJust got Nothing at " ++ (loc_filename loc)
fromJust' loc (Just x) = x
Run Code Online (Sandbox Code Playgroud)
然后有一些fromJust我可以在源代码中使用的宏,比如
x = $fromJust $ Map.lookup k m
Run Code Online (Sandbox Code Playgroud)
我确实设法通过使用quasiquotes并提取源文件名的字符串来破解它.似乎Loc没有Lift实例.有没有更好的办法?
fromJustErr' l (Nothing) =
error $ printf "[internal] fromJust error\
\\n (in file %s)" l
fromJustErr' l (Just x) = x
fromJustErr = do
l <- location
let fn = loc_filename …Run Code Online (Sandbox Code Playgroud) 我很困惑为什么这个代码用类型提示编译,但没有编译.不应该有任何实例歧义(有一个实例).
class Monad m => FcnDef ? m | ? -> m where
def :: String -> ? -- takes a name
instance Monad m => FcnDef (m ? -> m ?) m where
def s body = body
dummyTest :: forall m. Monad m => m ()
dummyTest = def "dummy" ((return ()) :: m ())
Run Code Online (Sandbox Code Playgroud)
另一方面,如果省略:: m ()或所有类型声明,编译将失败并显示此错误,
No instance for (FcnDef (m0 () -> t0) m0)
arising from a use of `def'
Run Code Online (Sandbox Code Playgroud)
为了澄清,代码试图为多变量类型def,因此可以编写例如 …
问题.有没有办法让这个代码没有明确的类型签名?
代码.首先,我有一个实践中更好的替代MonadTrans课程,受到启发Data.Newtype.看起来像这样,
{-# LANGUAGE FlexibleContexts, TypeFamilies #-}
module Alt.Control.Monad.Trans where
import Control.Monad
class (Monad , Monad (BaseMonad )) => MonadTrans ( :: * -> *) where
type BaseMonad :: * -> *
lift :: (BaseMonad ) ? -> ?
Run Code Online (Sandbox Code Playgroud)
然后,我有一个A方法的类foo,如果一个基础monad M是一个A,那么任何转换的monad T M也是一个A.在代码中,
class A where
foo :: String -> ()
instance (A (BaseMonad ), MonadTrans ) => A where
foo n = lift …Run Code Online (Sandbox Code Playgroud) 这是一个挑战问题,而不是一个有用的问题(我已经花了几个小时).鉴于一些功能,
put_debug, put_err :: String -> IO ()
put_foo :: String -> StateT [String] m ()
Run Code Online (Sandbox Code Playgroud)
我想编写一个通用的printf函数,称之为gprint,这样我就可以编写了
pdebug = gprint put_debug
perr = gprint put_err
pfoo = gprint put_foo
Run Code Online (Sandbox Code Playgroud)
然后使用pdebug,perr和pfoo像printf,例如,
pdebug "Hi"
pdebug "my value: %d" 1
pdebug "two values: %d, %d" 1 2
Run Code Online (Sandbox Code Playgroud)
我无法想出一个足够普通的课程.我的尝试就像(对于那些熟悉的Printf,或Oleg的可变函数方法)
class PrintfTyp r where
type AppendArg r a :: *
spr :: (String -> a) -> String -> [UPrintf] -> AppendArg r a
Run Code Online (Sandbox Code Playgroud)
要么
class …Run Code Online (Sandbox Code Playgroud) 当使用该mock库编写Python测试时,我经常会收到“用什么方法调用参数”,
from __future__ import print_function
import mock
m = mock.MagicMock(side_effect=lambda x: x * x)
m(4)
print("m called with: ", m.call_args_list)
Run Code Online (Sandbox Code Playgroud)
(这将打印m called with: [call(4)])。问题:有什么方法可以获取返回值(在这种情况下为16)?
详细信息:在我的特定情况下,我想使用side_effect返回一个子模拟对象:对该对象进行内部检查以查看其上的内容很重要。例如,“真实代码”(非测试代码)可能会写成,
myobj = m(4)
myobj.foo()
Run Code Online (Sandbox Code Playgroud)
使用side_effect似乎是一种方便的方法来返回新的子模拟对象,但也可以保持存在call_args_list。但是,似乎并没有MagicMock从side_effect函数中存储返回值……我错了吗?
haskell ×4
typeclass ×3
clojure ×2
ghc ×2
python ×2
android ×1
gridview ×1
macros ×1
mocking ×1
python-mock ×1
scroll ×1
typechecking ×1
unicode ×1
unit-testing ×1
vim ×1