问题列表 - 第34944页

来自流阅读器的F#懒惰eval?

我遇到了我的代码中的一个错误,这让我觉得我并不真正理解有关F#和懒惰评估的一些细节.我知道F#急切地评估,因此我对以下函数感到有些困惑:

// Open a file, then read from it. Close the file. return the data.
let getStringFromFile =  
    File.OpenRead("c:\\eo\\raw.txt")
    |> fun s -> let r = new StreamReader(s)
                let data = r.ReadToEnd
                r.Close()
                s.Close()
                data
Run Code Online (Sandbox Code Playgroud)

当我在FSI中称呼它时:

> let d = getStringFromFile();;

System.ObjectDisposedException: Cannot read from a closed TextReader.

at System.IO.__Error.ReaderClosed()
at System.IO.StreamReader.ReadToEnd()
at <StartupCode$FSI_0134>.$FSI_0134.main@()
Stopped due to error
Run Code Online (Sandbox Code Playgroud)

这让我觉得这getStringFromFile是懒惰的评价 - 所以我完全糊涂了.我没有得到关于F#如何评估函数的信息.

evaluation f# eager lazy-evaluation

5
推荐指数
1
解决办法
1167
查看次数

如何强制Scons输出(exe,obj,lib和dll)到特定的构建目录?

我一直在尝试让scons将exe,obj,lib和dll文件输出到特定的构建目录.

我的文件结构如下所示:

/projectdir
  /build
    /bin
    /obj
  /source
    /subdirs
    /..
  SConstruct
Run Code Online (Sandbox Code Playgroud)

基本上,我现在得到的是我的源目录被obj文件污染了.我宁愿把它放在一个地方.

SConstruct文件如下所示:

env.VariantDir('build', 'source', duplicate = 0)
env.Program('Hierarchy', source = ['source/sconstest.cpp', 'source/utils/IntUtil.cpp'])
Run Code Online (Sandbox Code Playgroud)

scons

12
推荐指数
2
解决办法
8680
查看次数

多重定义

我的代码有一个关于不定义的错误operator<.我operator<通过重载它来纠正我的代码中的问题.当我编译它时,没有错误,但它有很多关于多重定义的错误.我的代码是:

int Vector3D::operator < (const Vector 3D &vector) const
{
 if(x<vector.x)
   return 1;
 else
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

以下是一些行:

debug/src/common/propagation-delay-model_1.o: In function `empty':
/usr/include/c++/4.1.2/limits:1044: multiple definition of `ns3::Vector3D::operator<(ns3::Vector3D const&) const'
debug/src/core/vector_1.o:/home/bahar/Desktop/ns/ns-allinone-3.9/ns-allinone-3.9/ns-3.9/build/../src/core/vector.h:118: first defined here
debug/src/common/propagation-loss-model_1.o: In function `empty':
/usr/include/c++/4.1.2/new:94: multiple definition of `ns3::Vector3D::operator<(ns3::Vector3D const&) const'
debug/src/core/vector_1.o:/home/bahar/Desktop/ns/ns-allinone-3.9/ns-allinone-3.9/ns-3.9/build/../src/core/vector.h:118: first defined here
debug/src/common/jakes-propagation-loss-model_1.o: In function `empty':
/usr/include/c++/4.1.2/new:94: multiple definition of `ns3::Vector3D::operator<(ns3::Vector3D const&) const'
debug/src/core/vector_1.o:/home/bahar/Desktop/ns/ns-allinone-3.9/ns-allinone-3.9/ns-3.9/build/../src/core/vector.h:118: first defined here
debug/src/common/cost231-propagation-loss-model_1.o: In function `empty':
/usr/include/c++/4.1.2/limits:1044: multiple definition of `ns3::Vector3D::operator<(ns3::Vector3D const&) const'
debug/src/core/vector_1.o:/home/bahar/Desktop/ns/ns-allinone-3.9/ns-allinone-3.9/ns-3.9/build/../src/core/vector.h:118: first …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
2160
查看次数

MySQL触发器+通知长轮询Apache/PHP连接

我知道有Comet服务器技术可以做到这一点,但我想写一些简单和本土的东西.

当一条记录插入到MySQL表中时,我希望它以某种方式将这些数据传递给一系列使用PHP(或其他)的长轮询Apache连接.因此,多个人通过他们的浏览器"监听",第二个发生MySQL INSERT,它被发送到他们的浏览器并执行.

简单的方法是让PHP脚本轮询MySQL数据库,但这并不是真的从服务器推送并引入了一些不必要的数据库查询令人无法接受的顺序.我希望从MySQL获取数据到长轮询连接,基本上没有监听器查询.

有关如何实现这一点的任何想法?

php mysql apache comet long-polling

7
推荐指数
1
解决办法
2244
查看次数

Scala有一个类似于Haskell的`$`的运算符吗?

Scala有一个类似于Haskell的$运算符吗?

-- | Application operator.  This operator is redundant, since ordinary
-- application @(f x)@ means the same as @(f '$' x)@. However, '$' has
-- low, right-associative binding precedence, so it sometimes allows
-- parentheses to be omitted; for example:
--
-- >     f $ g $ h x  =  f (g (h x))
--
-- It is also useful in higher-order situations, such as @'map' ('$' 0) xs@,
-- or @'Data.List.zipWith' ('$') fs xs@.
{-# …
Run Code Online (Sandbox Code Playgroud)

scala function operators

12
推荐指数
1
解决办法
1465
查看次数

如何在遗留Web应用程序中删除CSS spaghetti?

在处理了几个大型Web应用程序,并看到没有清晰结构的巨大样式表之后,我真的很想知道人们是否已经找到了保持css清理大型复杂Web应用程序的方法.

你如何从遗留的,混乱的CSS转移到清理,漂亮的级联,DRY样式表?

我目前正在开发的应用程序有12000行css.它早在没有标准或评论css的情况下就有机地增长到这个尺寸,唯一的规则就是让应用程序与设计相匹配.我们经常遇到的一些问题:

  • 冲突的样式:一个开发人员添加.header {font-weight:bold;}但是.header已经在其他模块中使用,并且不应该是那些粗体.

  • 级联问题:Foo小部件有一个.header但它还包含一个带有.header类的Bar小部件列表.

    • 如果我们定义.foo .header {...}和.bar .header {...},foo中未明确覆盖的任何内容都会显示在bar中.
    • 如果我们定义.foo> .header和.bar> .header但后来需要修改foo来包装div中的标题,我们的样式就会破坏.
  • 继承问题,我们不断将小部件字体重新定义为11px/normal,因为一些顶级容器使用12px/18 px行高.

  • 使用诸如dojo/dijit或jquery ui之类的库来对抗小部件库,这些库可以添加大量样式以实现功能,这意味着我们的代码充斥着我们必须覆盖库样式以使事物看起来恰到好处的地方.有大约2000行css只是为了调整内置dijit样式


我们正在考虑实施以下规则:

命名空间所有新的窗口小部件类 - 如果你有一个窗口小部件foo,所有的子类名将是.foo_,所以我们得到:.foo,.foo_header,.foo_content,.foo_footer.这使得我们的CSS基本上是FLAT,但我们看不到其他方法来组织我们的代码,而不会遇到上面提到的遗留样式或级联问题.

警察通用样式 - 有一小部分通用类,只适用于非常特殊的情况.例如.editable - 适用于应该调用编辑器的句子部分 - 应该只包含文本节点.

利用css编译器mixins要避免在不同的小部件中重复定义相同的样式,请定义并使用mixins.虽然我们担心mixins也会失控.

我们还能如何摆脱不断将回归引入可持续发展的css混乱.

css legacy refactoring web-applications

10
推荐指数
1
解决办法
1638
查看次数

检查NULL时要忽略多少位?

以下使用seg-V崩溃:

// my code
int* ipt;
int bool set = false;
void Set(int* i) {
  ASSERT(i);
  ipt = i;
  set = true;
}

int Get() {
  return set ? *ipt : 0;
}

// code that I don't control.
struct S { int I, int J; }
int main() {
  S* ip = NULL;
  // code that, as a bug, forgets to set ip...
  Set(&ip->J);
  // gobs of code
  return Get();
}
Run Code Online (Sandbox Code Playgroud)

这是因为虽然i它不是NULL仍然无效.如果调用代码从NULL指针获取数组索引操作的地址,则会发生同样的问题.

对此的一个解决方案是修剪低阶位: …

c++ low-level segmentation-fault

0
推荐指数
1
解决办法
299
查看次数

如何键入提示数组?

我有以下记录:

(defrecord Signal [samples ^double sample-rate ^double scaling-factor])
Run Code Online (Sandbox Code Playgroud)

如何指定samples为双数组?

我正在使用clojure 1.2.0

编辑:

@dreish当我(show Signal)从levand更改后调用时,我得到以下输出:

[35] <init> (Object,double,double)
[36] <init> (Object,double,double,Object,Object)
[37] __extmap : Object
[38] __meta : Object
[39] sample_rate : double
[40] samples : Object
[41] scaling_factor : double
Run Code Online (Sandbox Code Playgroud)

我知道暗示非原始类型只是用来避免反射.来自http://clojure.org/datatypes

  • 请注意,目前非基本类型的类型提示不会用于约束字段类型和构造函数arg,但将用于优化其在类方法中的使用

谢谢大家!

clojure type-hinting

17
推荐指数
2
解决办法
3330
查看次数

在定义之后将属性添加到匿名JavaScript类型?

我知道在JavaScript中你可以向现有类型添加新属性(比如Date),但是可以在定义匿名类型后添加新属性吗?

例如,假设我有以下脚本:

var employee = {
    'Name': 'Scott',
    'Age': 32,
    'JavaScriptNewbie': true
};
Run Code Online (Sandbox Code Playgroud)

稍后在我的脚本中,我想为这个雇员对象添加一个新属性(比如Salary).那可能吗?

TIA!

javascript

11
推荐指数
1
解决办法
2464
查看次数

基于匹配条件替换数组元素的优雅方法是什么?

我使用以下逻辑来根据条件更新列表项.

def update_orders_list(order)
  @orders.delete_if{|o| o.id == order.id}
  @orders << order
end
Run Code Online (Sandbox Code Playgroud)

理想情况下,我会更喜欢这些方法:

array.find_and_replace(obj) { |o| conditon }
Run Code Online (Sandbox Code Playgroud)

要么

idx = array.find_index_of { |o| condition }
array[idx] = obj
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

ruby ruby-on-rails

3
推荐指数
2
解决办法
6799
查看次数