我使用了"alias ruby = ruby1.9.1",所以我可以用这个来执行我的ruby:
红宝石123.rb
要么
ruby1.9.1 123.rb
但在我的vim中,我使用:!ruby和get/bin/bash:ruby:命令未找到.
我必须使用:!ruby1.9.1
别名如何工作?为什么vim不知道呢?
我知道哈希表数据结构的基本原理.如果我有一个大小为N的哈希表,我必须尽可能均匀地将我的数据分配到这些N桶中.
但实际上,大多数语言都有自己的内置哈希表类型.当我使用它们时,我不需要事先知道哈希表的大小.我只是把我想要的东西放进去.例如,在Ruby:
h = {}
10000000.times{ |i| h[i]=rand(10000) }
Run Code Online (Sandbox Code Playgroud)
它怎么能这样做?
人们说C++继承是邪恶的,所以Java用接口"修复"了这个问题.
但是Scala介绍了traits,它们是......部分实现的接口?这不会带来多重继承吗?
这是否意味着Scala家伙认为多重继承是好的?或者他们有一些我没有注意到的关键差异?
这段代码:
type A struct {
t time.Time
}
func main() {
a := A{time.Now()}
fmt.Println(a)
fmt.Println(a.t)
}
Run Code Online (Sandbox Code Playgroud)
打印:
{{63393490800 0 0x206da0}}
2009-11-10 23:00:00 +0000 UTC
Run Code Online (Sandbox Code Playgroud)
A没有实现String(),所以它不是一个fmt.Stringer并打印其原生代表.但是String()对于我想要打印的每个结构实现起来都非常繁琐.更糟糕的是,String()如果我添加或删除某些字段,我必须更新s.是否有更简单的方法来打印结构,其字段String()是?
我有两个网页(a.php&b.php).它们具有非常相似的逻辑但不同的UI.我写了两个javascript.
它们看起来像:
aUI = {
displayMessage = function ...
showDetails = function ...
}
function foo() {
aUI.displayMessage();
aUI.showDetails();
// and other things about aUI.displayMessage() and aUI.showDetails()...
}
foo();
Run Code Online (Sandbox Code Playgroud)
aUI.displayMessage()与bUI.displayMessage()不同.但是a.js和b.js有相同的foo().
我提取了foo().所以现在我有三个.js:aUI.js,bUI.js和logic.js.
logic.js:
function foo() {
UI.displayMessage();
UI.showDetails();
//other things about UI
}
foo();
Run Code Online (Sandbox Code Playgroud)
aUI.js和bUI.js:
UI = {
displayMessage = function ...
showDetail = function ...
}
Run Code Online (Sandbox Code Playgroud)
a.php怎么知道它应该使用aUI.js?我写了简单的工具:
<script type="text/javascript" src="aUI.js"></script>
<script type="text/javascript" src="logic.js"></script>
Run Code Online (Sandbox Code Playgroud)
它有效,但似乎并不聪明.我在项目中有重复的命名空间'UI'.
有没有更好的办法?
我安装了libboost-dev通过apt-get,它被放入/usr/lib.
/usr/lib$ ls | grep boost
libboost_filesystem.so.1.46.1
libboost_iostreams.so.1.46.1
libboost_serialization.so.1.46.1
libboost_system.so.1.46.1
libboost_thread.so.1.46.1
libboost_wserialization.so.1.46.1
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译使用的源时,boost_thread我仍然遇到错误.
$ g++ tcp_echo.cpp -o tcp_echo -L/usr/lib -llibboost_thread
/usr/bin/ld: cannot find -lboost_thread
collect2: ld returned 1 exit status
$ g++ tcp_echo.cpp -o tcp_echo -L/usr/lib -lboost_thread
/usr/bin/ld: cannot find -lboost_thread
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
什么是正确的安装和链接方式libboost?
我有一个集合Option[T],现在我想从中提取值.但我也希望新系列能够排除Nones.
val foo = List(None, None, Some(1), None, Some(2))
Run Code Online (Sandbox Code Playgroud)
我想到的第一个想法是map,但它有点不直观.
foo.map(o => o.get) // Exception!
foo.map(o => o.getOrElse(null)).filterNot(_ == null) // List(1, 2), works but not elegant
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法来实现这种行为?
考虑到这个功能:
def justTrue[T, S](seq: S)(implicit ev: S <:< Seq[T]) = true
justTrue(List(1,2,3))
>> true
Run Code Online (Sandbox Code Playgroud)
有用.但是为什么不能将相同的签名用作隐式转换?
implicit class TruthTeller[T, S](seq: S)(implicit ev: S <:< Seq[T]) {
def justTrue = true
}
List(1,2,3).justTrue
>> error: Cannot prove that List[Int] <:< Seq[T].
Run Code Online (Sandbox Code Playgroud)
隐式转换只是一个函数吗?
我使用apache2来托管一个站点.我的目录中有index.html和index.php.
我打开/etc/apache2/apache2.conf并添加一行:
DirectoryIndex index.php index.html index.htm
Run Code Online (Sandbox Code Playgroud)
然后重启apache2.但是当我打开localhost/~username它时,它会访问index.html.
我环顾四周但找不到问题.我的httpd.conf是空的,我没有.htaccess文件.
设置隐藏在哪里?
编辑:修改后/etc/apache2/mods-availiable/dir.conf,它找到index.php.
但为什么apache2.conf无法覆盖dir.conf?!
我已将环境变量设置CPLUS_INCLUDE_PATH为boost.
>echo $CPLUS_INCLUDE_PATH
boost
Run Code Online (Sandbox Code Playgroud)
但它根本不起作用.
>g++ parse_utils.cpp
parse_utils.cpp:1:34: fatal error: boost/lexical_cast.hpp: No such file or directory
Run Code Online (Sandbox Code Playgroud)
该.hpp是在这条道路.
>g++ parse_utils.cpp -Iboost
(work well)
Run Code Online (Sandbox Code Playgroud)
我认为CPLUS_INCLUDE_PATH相当于-I选项?
>g++ --version
g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Run Code Online (Sandbox Code Playgroud)