我在RHEL 5上尝试/ proc这样:
$echo $$
50040
$ls -ld /proc/self
lrwxrwxrwx 1 root root 64 Jan 22 15:25 /proc/self -> 22485
Run Code Online (Sandbox Code Playgroud)
我期望/ proc/self链接到/ proc的子目录,这是我当前的进程ID.但$$显示进程ID是50040,而不是22485.为什么?
如果你将proc摘要与class-clause一起使用,它将按照这个类的顺序对你的观察结果进行排序.
proc summary data=One;
by var_1;
class var_2 var_3 var_4;
output out = Two(drop= _freq_ _type_);
run;
Run Code Online (Sandbox Code Playgroud)
1)我是对的吗?
2)如果我没有指定所有字段会发生什么?
proc summary data = Three(keep= var_1 var_2 var_ 3 var_4 var_5 var_6);
by var_1;
class var_2 var_3;
output out = Four(drop= _freq_ _type_ );
run;
Run Code Online (Sandbox Code Playgroud)
3)哪个处理更快:proc summary或proc sort?
我现在正在研究街区,它们难倒了我。
我用这个作为例子:
class ProcExample
attr_reader :proc_class
def initialize(&block)
@stored_proc = block
@proc_class = @stored_proc.class
end
def use_proc(arg)
@stored_proc.call(arg)
end
end
eg = ProcExample.new {|t| puts t}
p eg.proc_class
p eg.use_proc("Whoooooooo")
Run Code Online (Sandbox Code Playgroud)
现在我有点(不太明白)块是如何传递到@stored_proc中的。我使用@proc_class是因为我很好奇块对象实际上存储为哪个类。
但是如果我想将块存储在常规变量中怎么办?
例如:
block_object = {|param| puts param**2}
Run Code Online (Sandbox Code Playgroud)
但我发现这被视为哈希而不是块/过程。自然就会出现错误。我尝试在变量名中和块的开头用“&”号分配它,但这不起作用。
最后我想知道是否可以调用一个函数并用包含该块的变量替换该块。
就像这样:
(1..10).each block_object
Run Code Online (Sandbox Code Playgroud)
这在 Ruby 中可能吗?
让我们说我有一个命名空间。我想找到所有的命名空间过程。例如,假设我有以下代码:
namespace eval foo {
proc me {} { puts "yey!" }
proc moo {} { puts "ney!" }
}
puts [ getAllNamespaceProcs foo ] ; # getAllNamespaceProcs is what I do not know how to do
Run Code Online (Sandbox Code Playgroud)
这应该产生:
> { me moo }
Run Code Online (Sandbox Code Playgroud)
谢谢。
我有一个示例程序
proc exam {return_value} {
set input "This is my world"
regexp {(This) (is) (my) (world)} $input all a b c d
set x "$a $b $c $d"
return x }
Run Code Online (Sandbox Code Playgroud)
在执行上述过程之后,我将获得单个列表中的所有 abcd 值,因此,如果我只想要上述过程中的 b 值,现在正在执行 [lindex [exam] 1]。我正在寻找其他方式以不同的方式获取输出,而不是使用 lindex 或 returnun_value(b) 可以给出我的预期输出
如果我有一系列哈希
collection = [
{ first_name: 'john', last_name: 'smith', middle: 'c'},
{ first_name: 'john', last_name: 'foo', middle: 'a'}
]
Run Code Online (Sandbox Code Playgroud)
还有一系列我想要排序的键:
sort_keys = ['first_name', 'last_name']
Run Code Online (Sandbox Code Playgroud)
sort_by如果密钥始终与集合中的密钥匹配,我如何传递这些密钥?
我试过了
collection.sort_by { |v| sort_keys.map(&:v) }
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我相信我需要使用proc,但我不确定如何实现它.非常感谢任何帮助!
使用Ruby 2.2.1
我想在 select 语句中定义某些特定列的长度,并且想连接两列,sponsor id即sponsorSAS proc sql 中的“ABC-123”。请帮助这是代码
proc sql;
select
project_id,
sponsor_id,
empl_country,
region,
empl_dept_descr,
empl_bu_descr,
sponsor,
full_name,
mnth_name FROM Stage0;
quit;
Run Code Online (Sandbox Code Playgroud) 我正在开发一个大型数据应用程序,并且遇到了似乎无法修复的舍入错误。代码基本上是这样的:
proc sql;
select round(amount,.01) - round(amount * (percentage/100),.01) as amount
from data;
quit;
Run Code Online (Sandbox Code Playgroud)
我尝试了各种修复方法,但所有似乎都会导致另一个方向出现其他舍入错误。对于产生错误量 = 56.45 和百分比 = 10 的行。我得到的结果等于 50.80,并希望结果等于 50.81。我无法接受舍入误差,因为有一个单独的过程可以反转没有舍入误差的交易,最终反转加上产生舍入误差的部分必须加起来为零。
我尝试过的代码:
select round((((100-percentage)/100)*amount), .01)
select round(amount,.01) - round(amount * (percentage/100),.001) as amount
Run Code Online (Sandbox Code Playgroud)
其中第二个解决了问题,但在另一个方向上产生了三个舍入误差。
非常感谢任何帮助。
谢谢。
当我尝试将任意块传递给each_with_object方法时,会引发错误:
%w(foo bar baz).each_with_object([]) &->(i,m) { m << i.upcase }
# => NoMethodError: undefined method `&' for #<Enumerator: ["foo", "bar", "baz"]:each_with_object([])>
Run Code Online (Sandbox Code Playgroud)
当我尝试将块传递给inject方法时,它也会引发错误:
%w(foo bar baz).inject('') &->(m,i) { m + i.upcase }
# => NoMethodError: undefined method `' for "foo":String
Run Code Online (Sandbox Code Playgroud)
但是如果我没有传递初始值,它就有效:
%w(foo bar baz).split.inject &->(m,i) { m + i.upcase }
Run Code Online (Sandbox Code Playgroud)
当我将块传递给each方法时,它也可以工作.
%w(foo bar baz).each &->(i) { puts i.upcase }
# FOO
# BAR
# BAZ
Run Code Online (Sandbox Code Playgroud)
谁能解释这种行为?如何将任意块传递给前两个示例?
我有一个方法的符号名称,我想用一些参数调用它。我真正想做的归结为以下代码片段:
method.to_proc.call(method)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,method是对象上方法的符号名称。就我而言,我试图调用一个恰好是对象私有的方法。
这是我得到的错误输出:
>$ ruby symbol_methods.rb
symbol_methods.rb:33:in `call': private method `test_value_1' called for "value":String (NoMethodError)
from symbol_methods.rb:33:in `block (2 levels) in <main>'
from symbol_methods.rb:30:in `each'
from symbol_methods.rb:30:in `block in <main>'
from symbol_methods.rb:29:in `each'
from symbol_methods.rb:29:in `<main>'
Run Code Online (Sandbox Code Playgroud)
这是一个演示此行为的自包含示例:
data = [
["value", true],
["any value here", true],
["Value", true],
]
def matches_value(string)
string == "value"
end
def contains_value(string)
string.gsub(/.*?value.*?/, "\\1")
end
def matches_value_ignore_case(string)
string.downcase == "value"
end
#tests
[:matches_value, :contains_value, :matches_value_ignore_case].each_with_index do |method, index|
test = data[index]
value …Run Code Online (Sandbox Code Playgroud)