这是我今天早上遇到的一个愚蠢的问题:我们可以使用来自clojure的Scala类吗?
因为如果答案是肯定的,我肯定会学习Clojure ^^
import os
import xml.etree.ElementTree as et
for ev, el in et.iterparse(os.sys.stdin):
el.clear()
Run Code Online (Sandbox Code Playgroud)
在ODP结构上运行上述RDF转储会导致内存不断增加.这是为什么?我理解ElementTree仍然构建一个解析树,尽管有子节点clear()ed.如果这是这种内存使用模式的原因,有没有办法解决它?
我试图理解fieldspragma 的行为,我发现这些行为很难记录,关于以下划线为前缀的字段.这就是文档中有关它的内容:
以下划线字符开头的字段名称对类是私有的,对子类不可见.可以覆盖继承的字段,但如果与-w开关一起使用,则会生成警告.
根据我的测试,这与其实际行为不一致.不仅 - _在子类中可见的前缀字段,它们在外部类中也是可见的(除非我没有得到"可见"的含义).此外,直接访问受限制的哈希工作正常.
在哪里可以找到更多关于fields编译指示行为的信息,而不是源代码?
{
package Foo;
use strict;
use warnings;
use fields qw/a _b __c/;
sub new {
my ( $class ) = @_;
my Foo $self = fields::new($class);
$self->a = 1; $self->b = 2; $self->c = 3;
return $self;
}
sub a : lvalue { shift->{a} }
sub b : lvalue { shift->{_b} }
sub c : lvalue { shift->{__c} }
}
{
package Bar;
use base 'Foo'; …Run Code Online (Sandbox Code Playgroud) 我想公开用户创建,以便未经身份验证的用户可以创建新帐户_users,但只为admin角色提供读取权限.这可能吗?怎么样?
我希望能够识别表单的模式
28°44'30"N., 33°12'36"E.
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的:
use utf8;
qr{
(?:
\d{1,3} \s* ° \s*
\d{1,2} \s* ' \s*
\d{1,2} \s* " \s*
[ENSW] \s* \.?
\s* ,? \s*
){2}
}x;
Run Code Online (Sandbox Code Playgroud)
毋庸置疑,这不符合.它与扩展字符(即度数符号)有什么关系吗?或者我只是搞砸了这个大时间?
CPAN如果你知道那些可以解决我问题的东西,我也会很感激.我看过Regex :: Common和Geo :: Formatter,但这些都不是我想要的.有任何想法吗?
更新
事实证明,我需要use utf8在读取文件中的坐标时取出.如果我用一个坐标手动初始化一个变量,它会很好地匹配,但是一旦我从一个文件读取同一行,它就不匹配.拿出use utf8解决了.我想我真的不明白utf8在做什么.
这是我的输入数据:
[[:a 1 2] [:a 3 4] [:a 5 6] [:b \a \b] [:b \c \d] [:b \e \f]]
Run Code Online (Sandbox Code Playgroud)
我想将此映射到以下内容:
{:a [[1 2] [3 4] [5 6]] :b [[\a \b] [\c \d] [\e \f]]}
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止:
(defn- build-annotation-map [annotation & m]
(let [gff (first annotation)
remaining (rest annotation)
seqname (first gff)
current {seqname [(nth gff 3) (nth gff 4)]}]
(if (not (seq remaining))
m
(let [new-m (merge-maps current m)]
(apply build-annotation-map remaining new-m)))))
(defn- merge-maps [m & ms]
(apply merge-with conj …Run Code Online (Sandbox Code Playgroud) 寻找关于如何处理我的Perl编程家庭作业编写RNA合成程序的建议.我总结并概述了下面的程序.具体来说,我正在寻找下面的块的反馈(我将编号以便于参考).我读过安德鲁约翰逊的"Perl编程元素"第6章(好书).我还阅读了perlfunc和perlop pod-pages,没有任何内容可以从哪里开始.
程序描述:程序应该从命令行读取输入文件,将其翻译成RNA,然后将RNA转录成一系列大写的单字母氨基酸名称.
接受命令行上指定的文件
在这里我将使用<>运算符
检查以确保该文件仅包含acgt或die
if ( <> ne [acgt] ) { die "usage: file must only contain nucleotides \n"; }
Run Code Online (Sandbox Code Playgroud)将DNA转录为RNA(每个A替换为U,T替换为A,C替换为G,G替换为C)
不知道该怎么做
从第一次出现的"AUG"开始,把它转录成3个字符的"密码子".
不确定,但我认为这是我将开始%哈希变量的地方?
取3个字符"密码子"并给它们一个字母符号(一个大写的单字母氨基酸名称)
使用键赋值(这里有70种可能性,所以我不确定存储位置或访问方式)
如果遇到间隙,则启动新行并重复处理
不确定,但我们可以假设差距是三倍的倍数.
我是以正确的方式接近这个吗?是否有我可以忽略的Perl功能可以简化主程序?
必须是自包含程序(密码子名称和符号的存储值).
每当程序读取没有符号的密码子时,这是RNA中的缺口,它应该开始一个新的输出系列并从下一次出现的"AUG"开始.为简单起见,我们可以假设间隙总是三倍的倍数.
在我花费任何额外时间进行研究之前,我希望得到确认,我正在采取正确的方法.感谢您花时间阅读并分享您的专业知识!
我正在尝试实现"缩小地图"功能.也就是说,它应该返回一个序列,该序列包括应用于f前coll两项的结果,然后是应用于f该结果和第三项的结果coll,等等.
(def c [[0 0 0 0] [1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1]])
(defn- sum-vector [v1 v2]
(map + v1 v2))
(defn reduce-map [f coll & acc]
(if (< (count coll) 2)
(if (empty? acc) coll acc)
(let [head (apply f (take 2 coll))
tail (drop 2 coll)]
(recur f (conj tail head) (conj acc head)))))
Run Code Online (Sandbox Code Playgroud)
例如,像这样调用这个函数:
(reduce-map sum-vector c)
Run Code Online (Sandbox Code Playgroud)
应该返回:
[[1 …Run Code Online (Sandbox Code Playgroud) (这是一个关于风格的问题.我知道这可以用一堆条件,多方法等来完成)
在以下函数中,null-vector定义了每个实现.如何为整个功能设置一次?通常,是否可以为所有实现设置公共绑定?
一个闭包不起作用,因为它null-vector需要一个"论证",但我想我能partial做到.但是,仍然需要计算size参数.显然,我想避免重复代码.
(defn path
"Returns a lazy sequence of vectors representing a monotonic path
walked over coll in n-dimensional space, where n is the cardinality
of coll's alphabet."
([coll]
(let [alphabet (set coll)
cardinality (count alphabet)
alpha-map (apply hash-map (interleave alphabet (range cardinality)))
null-vector (vec (repeat cardinality 0))]
(path coll null-vector alpha-map)))
([coll alpha-map]
(let [null-vector (vec (repeat (count (keys alpha-map)) 0))]
(path coll null-vector alpha-map)))
([coll origin alpha-map]
(let [null-vector (vec (repeat …Run Code Online (Sandbox Code Playgroud) 一个特定的宏在其主体中运行每个表达式,在每个表达式之间交错原子,并收集结果.
这适用于硬编码表达式,但是如果我想动态生成一系列表达式插入到宏调用的主体中,那么显然不会起作用,因为这将在宏完成之后进行评估工作.
我想解决方案是编写我自己的宏来生成我需要的表达式,但我不确定是否会在外部宏之前进行评估.
我尝试过类似的东西,但它不起作用:
(mac genexpr (list)
(map (fn (e) `(something ,e)) list))
Run Code Online (Sandbox Code Playgroud)