好的,这就是我想要的:在Eclipse包浏览器中,我看到以下内容:(点表示可用于展开文件夹的可点击箭头)
长话短说,我想在源文件夹(和几个源文件夹,因此制作更多不会解决问题)中有许多包,每个包含许多子包 - 所以每个源文件夹有几百个包的顺序 - 每个包含十五个子包的二十个包.因此,我希望层次结构如下所示:
所以我可以打开或关闭一个包并查看一个子包列表,而不是将所有包和子包都放在层次结构的同一级别 - 这再次使得同时显示的包太多了.注意这不是关于文件系统的问题; 据我所知,文件系统工作正常 - 这只是关于Eclipse包浏览器中的可视化显示的问题.
那么:有没有办法在层次结构中添加级别?谢谢!!(OS X 10.6上的Eclipse Helios)
首先:感谢@MattDowle; data.table是我开始使用以来发生过的最好的事情之一R.
第二:我知道变量列名的各种用例的许多变通方法data.table,包括:
可能更多我没有参考.
但是:即使我学会了上面记录的所有技巧,以至于我从来不必查看它们以提醒自己如何使用它们,我仍然会发现使用作为参数传递给函数的列名非常繁琐的任务.
我正在寻找的是以下解决方法/工作流程的"最佳实践认可"替代方案.考虑到我有一堆类似数据的列,并希望对这些列或它们的集合执行一系列类似的操作,其中操作具有任意高的复杂性,并且列名称组传递给指定的每个操作在变量中.
我意识到这个问题听起来很人为,但我却以惊人的频率遇到它.这些例子通常非常混乱,很难将与这个问题相关的功能分开,但我最近偶然发现了一个相当简单的简化用作MWE的方法:
library(data.table)
library(lubridate)
library(zoo)
the.table <- data.table(year=1991:1996,var1=floor(runif(6,400,1400)))
the.table[,`:=`(var2=var1/floor(runif(6,2,5)),
var3=var1/floor(runif(6,2,5)))]
# Replicate data across months
new.table <- the.table[, list(asofdate=seq(from=ymd((year)*10^4+101),
length.out=12,
by="1 month")),by=year]
# Do a complicated procedure to each variable in some group.
var.names <- c("var1","var2","var3")
for(varname in var.names) {
#As suggested in an answer to Link 3 above
#Convert the column name to a …Run Code Online (Sandbox Code Playgroud) 说我有一个朱莉娅性状,其涉及两种类型:一种类型是一种"基地"类型的可满足一种局部性状,另一种是一个相关联的是唯一地由基类型确定类型.(也就是说,BaseType - > AssociatedType的关系是一个函数.)这些类型一起满足了我感兴趣的复合特征.
例如:
using Traits
@traitdef IsProduct{X} begin
isnew(X) -> Bool
coolness(X) -> Float64
end
@traitdef IsProductWithMeasurement{X,M} begin
@constraints begin
istrait(IsProduct{X})
end
measurements(X) -> M
#Maybe some other stuff that dispatches on (X,M), e.g.
#fits_in(X,M) -> Bool
#how_many_fit_in(X,M) -> Int64
#But I don't want to implement these now
end
Run Code Online (Sandbox Code Playgroud)
现在这里有几个示例类型.请忽略示例的细节; 它们仅仅意味着MWE,细节上没有任何相关内容:
type Rope
color::ASCIIString
age_in_years::Float64
strength::Float64
length::Float64
end
type Paper
color::ASCIIString
age_in_years::Int64
content::ASCIIString
width::Float64
height::Float64
end
function isnew(x::Rope)
(x.age_in_years < 10.0)::Bool
end
function coolness(x::Rope)
if x.color=="Orange" …Run Code Online (Sandbox Code Playgroud) 几个月前我开始使用朱莉娅,经过数周的听证会,人们赞美它的各种功能,我决定尝试一下.我对它的了解越多,我就越喜欢它的风格,在高级语言中融合表达概念的易用性,注重速度和可用性.我实现了一个我在Julia中用C++和R编写的模型,发现Julia版本的运行速度比R版本快得多,但仍然比C++略慢.即便如此,代码在Julia中比在其他语言中更清晰.这是值得的,特别是当我推广该模型时,为扩大Julia代码范围所做的工作量远远低于其他语言中可比的工作量.
最近,我一直专注于让我的Julia代码运行得更快,因为我需要运行这个模型数万亿次.在此过程中我一直在引导@code_warntype,@time,@profile和ProfileView和track-allocation标志.大.这个工具包不像其他语言的分析工具那么好,但它仍然指出了很多瓶颈.
我发现我在我的代码中恰好具有我喜欢的朱莉娅的高级表现力,当我重写那种表达性以避免不必要的分配时,我失去了那种表达能力.作为一个简单的例子,我最近更改了一行代码
sum([x*y for x in some_list, y in similar_list])
Run Code Online (Sandbox Code Playgroud)
循环迭代列表并添加到状态变量.不是火箭科学,我理解为什么不必分配数组更快一点.其实这是一个很大,虽然速度更快.所以我做了类似的事情,避免使用Dicts或"感觉"正确的问题的复合类型,当我可以只是手动跟踪临时并行数组中的索引,一种编码风格,我厌恶,但显然运行一个当我重复创建和简单地使用小数据结构的特定操作时,要快很多次.
一般来说,这很好,因为我已经开始注意编写简短方法的指令,因此组成我自己的较短方法的行为的高级方法不需要"担心"较短的方法如何工作; 较短的那些可能是笨重的阅读而不会使我的程序的核心笨重阅读.
但这让我想知道我是否"错过了什么".如果语言的全部要点(对我而言,作为一个非理论上的最终用户)部分地将速度与易于开发/思考/阅读/维护等结合起来,即成为可写和可用的技术计算语言,然后这并不意味着我不应该花时间考虑最快的方法来添加一堆数字,不应该重写"易于阅读"或优雅的代码,利用映射,过滤器和将高级功能概念转化为"笨重"的代码,重新发明轮子,以低级别跟踪数组索引的方式表达那些东西?(我的某些部分期望在其设计背后具有如此多智能的语言足够聪明以"弄清楚"当我写sum([x*y])时它实际上不需要分配新数组,并且我太过于愚蠢地找出正确的词语来告诉语言,除了通过字面"手动"告诉整个循环业务.有一点我甚至想过写@macros一些快速表达的代码"转换"到长期但是更快的循环表达式,但我认为如果我基本上试图扩展编译器的函数只是为了解决相当简单的问题,我必须考虑错误的问题,这就是导致我写这个问题的原因.)
也许答案是"如果你想要真正的高性能代码,无论如何都要付出代价." 或者换句话说,快速代码与令人讨厌的读取循环,数组,跟踪索引等令人不愉快的代码是速度易读性权衡空间的有效前沿.如果是这样,这是完全有效的,因此我不会说我认为朱莉娅更少.我只是想知道这种编程风格是否真的在前沿,或者我的体验是什么,因为我只是没有用语言编写"好".(通过类比,看看问题什么是你最有效的Vim快捷方式?哪里接受的优秀答案基本上是OP没有"得到"它.)我怀疑即使我成功了让语言做我想做的很多事情,我只是不"得到"某些东西,但我不太了解要求什么,因为我担心我没有得到的是一个未知的未知对我来说.
TL; DR:在Julia的最佳实践中,我花了很多时间将我的高级函数调用"分解"为循环和数组的原始实现,以获得更快的性能,或者是指示性的我没有考虑正确编程/使用该语言?
编辑尝试解决@ user2864740的编辑和评论:我想知道是否有任何与0.4rc1/rc2特别相关的信息,或者特别是来自其中一个Julia开发人员的策略或建议比下面引用的更近(特别是@ StefanKarpinski的Jan 2014年答案在#6下面).谢谢
请参阅例如
(作为一个相当缺乏经验的Julia用户)我对这些信息的最佳综合,其中一些似乎已过时,最佳做法是"避免这样做"或"使用FastAnonymous.jl".
我想知道最新的最新方法和最好的方法是什么.
[更长版本:]
特别是,假设我有一个很大的功能层次结构.我希望能够做类似的事情
function transform(function_one::Function{from A to B},
function_two::Function{from B to C},
function_three::Function{from A to D})
function::Function{from Set{A} to Dict{C,D}}(set_of_As::Set{A})
Dict{C,D}([function_two(function_one(a)) => function_three(a)
for a in set_of_As])
end
end
Run Code Online (Sandbox Code Playgroud)
请不要太过字面意思.这是一个更为一般的转换形式的狭隘例子,无论转换的具体细节如何,我都希望能够做到这一点,但我想以这样的方式做到这一点,我不必担心(太多)关于检查性能(即,除了我在任何非函数与函数作为参数的情况下应用的正常担忧)每次我写一个行为这样的函数.
例如,在我理想的世界中,正确的答案是"只要你@anon在用这些函数作为参数调用这个函数之前注释每个输入函数,那么你就可以做到尽可能好,而无需调整到你传递的具体论据的具体情况."
如果这是真的,很好 - 我只是想知道这是否是正确的解释,或者如果没有,如果有一些资源我可以阅读这个主题更接近"逻辑"呈现的综合比这里的链接集合(在这个问题上,这更像是集体意识或思想史的流.
performance functional-programming function anonymous-function julia
我正在考虑编写类似于NamedArrays和Images中定义的类型.假设我只是想要一个带有一段元数据的数组,比如一个用户友好的名称,当我将数组写入磁盘时,我将在文件顶部写入.(这个细节不相关;我只是在设计一个例子.)
所以我可能会这样做
type MyNamedArray
data::Array
name::ASCIIString
end
function mywrite(f,x::MyNamedArray)
write(f,x.name)
write(f,x.data)
end
Run Code Online (Sandbox Code Playgroud)
或其他东西,没有其他行为需要与基本阵列行为不同.
在我看来,"我很明显"我只希望在Arrays上运行的每个现有函数都能在data这种类型的字段上运行.在另一种语言中,例如Java,我可能只是将子类name化为子类并作为实例字段添加到子类中,这将自动保持与所有现有Array操作的兼容性.但在朱莉娅,如果我尝试上面的解决方案,我现在需要定义更多的函数,例如@TimHoly和'davidavdav'在链接包中完成.
当然我知道被迫手工写出一些这些功能对于实现你没有想过的东西很有用.例如,在MyNamedArray上面给出的示例中,可以通过指出我没有定义名称来反对x::MyNamedArray * y::MyNamedArray.但是,如果我只是不关心这一点,并希望代码"只是工作",而没有那么多样板?(参见例如遍历符号推新方法定义在NamedArrays和手动编写出一百岁线的定义中的形象.绝大多数这些定义都是样板/的"明显"的定义.)
具体来说,继续我引用的例子MyNamedArray,因为默认可能x*y不再是a MyNamedArray,即因为每个函数都默认为在底层数据上应用相同函数的"继承"行为,我们可以忘记所有前面的元数据现有的功能.
请注意,我发现托马斯Lycken的答案这里有见地,等等都是问题和答案在这里.
我能想出的最好的合成是"你只需要把它搞砸并写出函数,或者写一个为你做这个的宏." 如果是这样的话,那就这样吧; 我只是想知道我是否错过了一个更好的选择,特别是更好的方法来设计解决方案,使其更加朱利安并避免样板.
根据我使用的字体,我可能会在错误的位置看到四分之一的光标(右下方的矩形没有闪烁),或者根本没有光标.尽管如此,我正在突出显示的行和列号显示在右下方.
我尝试了各种尺寸(11-14)的固定宽度字体混合,包括默认的Monospace,MacVim的Menlo,糟糕的Courier,以及另一个qa网站建议的Consolas.
任何想法如何让光标显示都会很棒.在NetBeans中获取Vi键绑定的替代方法也是可以接受的,尽管似乎jVi是最新/最活跃的工作.
NetBeans 7.1.2
编辑:图像显示没有突出显示的光标

图像显示实际上两个部分游标,我以前从未见过:

这是为了简化我在这里提出的问题的一部分:
我想写一些代码,保证在符合特定条件的类型上工作.我们今天要写一些代码:
immutable Example
whatever::ASCIIString
end
function step_one(x::Example)
length(x.whatever)
end
function step_two(x::Int64)
(x * 2.5)::Float64
end
function combine_two_steps{X}(x::X)
middle = step_one(x)
result = step_two(middle)
result
end
x = Example("Hi!")
combine_two_steps(x)
Run Code Online (Sandbox Code Playgroud)
运行此工作:
julia> x = Example("Hi!")
Example("Hi!")
julia> combine_two_steps(x)
7.5
Run Code Online (Sandbox Code Playgroud)
然后另一天我写了更多代码:
immutable TotallyDifferentExample
whatever::Bool
end
function step_one(x::TotallyDifferentExample)
if x.whatever
"Hurray"
else
"Boo"
end
end
function step_two(x::ASCIIString)
(Int64(Char(x[end])) * 1.5)::Float64
end
Run Code Online (Sandbox Code Playgroud)
你知道什么,我的通用组合功能仍然有效!
julia> y = TotallyDifferentExample(false)
TotallyDifferentExample(false)
julia> combine_two_steps(y)
166.5
Run Code Online (Sandbox Code Playgroud)
欢呼!但是,说这是一个深夜,我试图在第三个例子再次这样做.我记得要实施step_one,但我忘了实施step_two!
immutable ForgetfulExample
whatever::Float64
end
function …Run Code Online (Sandbox Code Playgroud) NetBeans(7)非常适合让您自定义键盘快捷键.
就个人而言,我想要ctrl- tab切换到右侧的选项卡和ctrl- shift- tab向左切换,但此时这些启动了烦人的Toggle Between Open Documents弹出窗口:

我已经设置了我的键盘快捷键以使用"下一个选项卡"使用解决方法获取此处所述的选项卡,但是切换打开文档行为无法从该菜单配置并覆盖我的快捷方式.

:(?
*PS:不希望将我的整个键绑定切换到另一个配置文件.
这是发生了什么.我正在使用Vim + LaTeX-Suite在Vim中编辑TeX文件.这可以在终端或MacVim中.
我很高兴
Insert lots of $\LaTeX \commands$ etc. I love using the $\backslash$.
Run Code Online (Sandbox Code Playgroud)
TeX很棒.没问题.
然后我去打开一个.R文件在同一个窗口(不同的选项卡).Vim的R-Plugin使用<Leader>密钥(\按照常规映射)来执行命令,例如,我键入\sa以将选择发送到R并执行并向下移动窗口.生活很美好.
问题:即使在编辑R文件时,Vim足够好,在我输入时不会在插入模式下弄错我\,出于某种原因,当我切换回选项卡来编辑TeX文件,然后输入\插入模式时,它会移动光标左的\,并暂停仿佛等待命令的剩余部分,在此之前重新移动到的右侧\和移动上作为I型.
下面显示会发生什么只是打字\在插入模式; 显然我可以通过箭头键将光标向左移动来重现这一点,但这不是这种情况发生的原因 - 光标只是向左移动一秒钟,好像等待R命令完成输入一样.

那么:如何在不牺牲其他功能的情况下停止TeX文件插入模式中的恼人行为?注意,(a)我不希望映射<Leader>到不同的键来帮助,因为那时该键在TeX中只有相同的左光标移动问题; (b),\无论如何我喜欢领导者,所以我不想改变它.
我使用Eclipse编写Java代码,并使用DropBox在多台计算机上与其他人同步我的代码.大多数情况下,一切都按预期工作:如果有人在任何一端进行更改,则保存更改,当另一个人刷新Eclipse工作区时,更改会通过并可以查看并成功运行.
有时会出现几个错误之一.有时Eclipse说它找不到主类,有时候它说它无法找到类本身.有时它不会报告错误但由于某种原因实际上不会更新.class文件,因此即使编译器显示新的源代码并保存,也会运行旧版本.我注意到,如果我手动将代码复制到文件系统中其他地方的新.java文件然后编译它,它工作正常,但由于某种原因,它拒绝重新生成.class文件,我必须删除它手动并将其替换为在另一个项目中生成的那个 - 然后它可以工作.但是为了解决其他问题,需要手动复制,删除和重新粘贴所有内容....
[实际错误包括NoClassDefFoundError,UnsupportedClassVersionError以及与没有主类相关的其他一些错误.]
我意识到这里的描述有些模糊,但遗憾的是我并不完全确定发生了什么.我希望我只是错过了一些有助于解决所有这些问题的基本事实.
谢谢!
julia ×5
eclipse ×2
netbeans-7 ×2
performance ×2
r ×2
traits ×2
vim ×2
abstraction ×1
coding-style ×1
data.table ×1
dropbox ×1
function ×1
generics ×1
hierarchy ×1
ide ×1
inheritance ×1
java ×1
jvi ×1
key-bindings ×1
latex ×1
metadata ×1
netbeans ×1
oop ×1
package ×1
packages ×1