小编gat*_*ado的帖子

python unicode编码/解码函数的异常(为什么不错误=忽略实际忽略它们?)

有人知道为什么字符串转换函数会在错误="忽略"传递时抛出异常吗?如何在不抛出错误的情况下将常规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"前缀?原因是你当然可以处理一些不是常数的东西:)

python unicode

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

区分大小写的键盘快捷键

我想要一些map/remap/nmap/etc. 命令区分大小写,例如"<CI>"与"<Ci>".

我检查了谷歌和:帮助地图,但无法找到这个.

vim keyboard-shortcuts case-sensitive

5
推荐指数
3
解决办法
1115
查看次数

Clojure - 派遣宏特别吗?

我想将调度宏包装在另一个中以保持清洁.然而,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标签; 我希望能够更好地搜索类似的问题.

macros clojure

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

clojure序列类型

什么是正确的序列类型?我有这个代码:

(defrecord MethodInfo [^clojure.lang.ISeq preconds ^clojure.lang.ISeq postconds])
Run Code Online (Sandbox Code Playgroud)

但它似乎没有正确执行类型要求,因为我可以写(new MethodInfo 1 2).

static-typing clojure typechecking

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

使用模板haskell包装带有源信息的函数(例如行号)的正确方法是什么

假设我从一个函数开始

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)

haskell template-haskell

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

缺少类型推断导致编译失败,没有实例模糊

我很困惑为什么这个代码用类型提示编译,但没有编译.不应该有任何实例歧义(有一个实例).

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,因此可以编写例如 …

haskell type-inference typeclass ghc

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

GHC类型推断困难

问题.有没有办法让这个代码没有明确的类型签名?

代码.首先,我有一个实践中更好的替代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)

haskell type-inference typeclass ghc associated-types

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

如何在Haskell中编写一系列printf函数(调试打印等)

这是一个挑战问题,而不是一个有用的问题(我已经花了几个小时).鉴于一些功能,

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,perrpfooprintf,例如,

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)

haskell typeclass type-families

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

GridView.scrollTo()的变通办法?

如前所述这里,Android的GridView.scrollTo()不工作.解决方案提到的方法setSelectedPosition似乎不存在于GridView中

smoothScrollToPosition 确实有效,但我真的不想要动画.

对于上下文,我有一个CursorAdapter-backed GridView,我希望视图"重置",即当我更改光标时滚动到顶部.

android scroll gridview

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

Python模拟库:有什么方法可以从魔术模拟调用中获取相应的返回值?

当使用该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。但是,似乎并没有MagicMockside_effect函数中存储返回值……我错了吗?

python unit-testing mocking python-mock

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