我尝试编写程序,其中部分列出所有目录(特别是从/开始),但我有一个问题/ proc/self无限递归(我得/ proc/self/task/4300/fd/3/proc/self/task/4300/fd/3/proc/self/task/4300/fd/3/proc/...等等).处理它的好方法是什么?
编辑:程序是用C语言编写的,我使用的是opendir(),readdir()
我有一个定义数据属性的类.
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)
有没有明显的方法可以做到这一点,我错过了?
我在我的脚本上运行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 警告?
考虑一下片段:
#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)
看起来完全相同.但是,cpp
GCC 4.6.1将其扩展为:
CAT(x, y)(); xy;
为什么?
我在 bash 中有以下字符串
str="kallel"
Run Code Online (Sandbox Code Playgroud)
我想str
从str2
. 包含str2
重复str
直到长度 = 20。所以结果应该是这样的:
str2="kallelkallelkallelka"
Run Code Online (Sandbox Code Playgroud)
在 bash 中怎么做?
所以我想要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) 假设我有一个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
应该返回一个n
用Tomato
s 填充的长度列表,除了input
包含带有匹配索引的关联对的所有地方- 在这种情况下,匹配Fruit
from 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)