小编uli*_*tko的帖子

在linux中列出目录时无限递归

我尝试编写程序,其中部分列出所有目录(特别是从/开始),但我有一个问题/ proc/self无限递归(我得/ proc/self/task/4300/fd/3/proc/self/task/4300/fd/3/proc/self/task/4300/fd/3/proc/...等等).处理它的好方法是什么?

编辑:程序是用C语言编写的,我使用的是opendir(),readdir()

c linux filesystems recursion

2
推荐指数
1
解决办法
3472
查看次数

简单的python问题:访问类数据成员

我有一个定义数据属性的类.

class channel:
    def __init(self,var1, var2):
        self.var1 = var1
        self.var2 = var1
        #etc
Run Code Online (Sandbox Code Playgroud)

到目前为止这么简单.但我想要做的是有一个方法,指定使用哪个数据属性,以便我可以一般地使用它来根据参数对不同的数据属性执行相同的操作,例如(显然这不对)

def fun(list_of_channels, var1):
    for chan in list_of_channels:
        #use chan.var1
Run Code Online (Sandbox Code Playgroud)

但是如果我调用的话,能够使用var2作为参数来访问chan.var2

fun(list_of_channels,var2)
Run Code Online (Sandbox Code Playgroud)

有没有明显的方法可以做到这一点,我错过了?

python class

2
推荐指数
1
解决办法
637
查看次数

如何明确故意分词?

我在我的脚本上运行shellcheck并且经常收到这个警告(在这种情况下是正确的,因为cd foo bar baz没有意义):

cd ${SOME_DIR} || exit 1
   ^-- SC2046: Quote this to prevent word splitting.
Run Code Online (Sandbox Code Playgroud)

这个警告主要是一个好的警告。变量包含多个参数时的一种例外情况:

gcc ${OPTIONS} ...
    ^-- SC2046: Quote this to prevent word splitting.
Run Code Online (Sandbox Code Playgroud)

是否有关于故意分词的约定更明确,可能会避免此 shellcheck 警告?

bash sh shellcheck

2
推荐指数
1
解决办法
1372
查看次数

两个相同的预处理器定义给出不同的结果

考虑一下片段:

#define CAT(a, b) a##b

#define M_0 CAT(x, y)
#define M(a) CAT(M_, a)()
M(0);

#define N_0() CAT(x, y)
#define N(a) CAT(N_, a)()
N(0);

对我来说,两个定义M(a)N(a)看起来完全相同.但是,cppGCC 4.6.1将其扩展为:

CAT(x, y)();
xy;

为什么?

c macros c-preprocessor

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

如何在bash中复制字符串?

我在 bash 中有以下字符串

str="kallel"
Run Code Online (Sandbox Code Playgroud)

我想strstr2. 包含str2重复str直到长度 = 20。所以结果应该是这样的:

str2="kallelkallelkallelka"
Run Code Online (Sandbox Code Playgroud)

在 bash 中怎么做?

linux string bash shell

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

为什么Data.Vector的Applicative实例不对齐其结果?

所以我想要fmap一个Vector相同大小的几个s的函数.好吧,Applicative救援!

?? let f x y z = x * y + z
??
?? let va = V.fromList [10, 20, 30]
?? let vb = V.fromList [2, 5, 3]
?? let vc = V.fromList [1, 2, 3]
??
?? f <$> va <*> vb <*> vc
fromList [21,22,23,51,52,53,31,32,33,41,42,43,101,102,103,61,62,63,61,62,63,151,152,153,91,92,93]
Run Code Online (Sandbox Code Playgroud)

哎呀 远非预期.


源头来看,很明显Applicative实例是根据Monad的定义; (<*>) = ap; (>>=) = flip concatMap.这就解释了为什么我的表情爆炸了:

?? (+) <$> V.fromList [10, 20, 30] <*> V.fromList [1, 2, …
Run Code Online (Sandbox Code Playgroud)

haskell

1
推荐指数
2
解决办法
193
查看次数

如何编写我的Applicative状态计算?

假设我有一个Traversable包含少量关联对的数据(Index, Fruit):

type Index = Int
data Fruit = Apple | Orange | Tomato

defaultFruit = Tomato

convertFruits :: (Traversable t) => t (Index, Fruit) -> Int -> [Fruit]
convertFruits input n = undefined
Run Code Online (Sandbox Code Playgroud)

convertFruits应该返回一个nTomatos 填充的长度列表,除了input包含带有匹配索引的关联对的所有地方- 在这种情况下,匹配Fruitfrom input放在匹配的索引处.

预期产出的例子:

convertFruits [] 4 = [Tomato, Tomato, Tomato, Tomato]
convertFruits [(2, Apple)] = [Tomato, Apple, Tomato, Tomato]
convertFruits [(1, Orange), (3, Orange), (4, Apple)] = \
    [Orange, Tomato, …
Run Code Online (Sandbox Code Playgroud)

haskell

0
推荐指数
2
解决办法
113
查看次数

标签 统计

bash ×2

c ×2

haskell ×2

linux ×2

c-preprocessor ×1

class ×1

filesystems ×1

macros ×1

python ×1

recursion ×1

sh ×1

shell ×1

shellcheck ×1

string ×1