下面是一个非常简单的例子.当我打开静态分析警告时,我仍然得到 警告CodeContracts:确保未经证实:Contract.Result()!= string.Empty
在线上
return string.Format("{0},{1}",movie.Title,movie.Description);
请看下面的代码
namespace CodeContractsSamples
{
public class MovieRepo
{
public string GetMovieInfo(Movie movie)
{
Contract.Requires(movie != null);
Contract.Ensures(Contract.Result<string>() != string.Empty);
return string.Format("{0}, {1}", movie.Title, movie.Description);
}
}
public class Movie
{
public string Title { get; set; }
public string Description { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
这个问题一直困扰着我:我在MSDN的DirectX 文章中读到了以下内容:
析构函数(应用程序)应该释放存储的任何(Direct2D)接口......
DemoApp::~DemoApp()
{
SafeRelease(&m_pDirect2dFactory);
SafeRelease(&m_pRenderTarget);
SafeRelease(&m_pLightSlateGrayBrush);
SafeRelease(&m_pCornflowerBlueBrush);
}
Run Code Online (Sandbox Code Playgroud)
现在,如果所有应用程序的数据都在终止(源)上被释放/解除分配,为什么我会麻烦地按顺序创建一个函数来/并单独释放它们?这没有道理!
随着时间的推移,我越来越多地看到这一点,这显然真的让我烦恼.上面的MSDN文章是我第一次遇到这个问题,所以提到所有其他情况都是有意义的.
好吧,因为到目前为止我实际上并没有问我的问题,他们在这里:
谢谢!
我有一台根本没有互联网接入的机器.
我使用我从其他机器通过pendrive获得的安装程序在其上安装了Haskell平台.
现在我想repa在没有互联网访问权限的家用机器上安装软件包.我该怎么办?
我的家用机器运行Linux(Debian),我的办公室机器是Windows 7.
我有一个DSL规范,这是一个像往常一样的序列(cat).我想利用spec的解析(即conforming)来获得符合我的DSL的表达式的AST.例如
user> (s/def ::person (s/cat :person-sym '#{person} :name string? :age number?))
=> :user/person
user> (s/conform ::person '(person "Henry The Sloth" 55))
=> {:person-sym person, :name "Henry The Sloth", :age 55}
Run Code Online (Sandbox Code Playgroud)
现在它被解析了,我有我的AST,我想用它做有趣的事情,所以我想测试它和诸如此类的东西.所以现在我需要为那个AST写一个规范,这基本上就是复制了一切.实际上它比这更糟糕,因为现在我必须为s/def我之前不需要的谓词规范,因为正如文档keys所说:"根据设计,不支持内联值规范." /"规范的(强制执行的)意见是,与命名空间关键字相关联的值的规范,例如:my.ns/k,应该在该关键字本身下注册." 所以重复(省略person-sym部分):
user> (s/def ::name string?)
=> :user/name
user> (s/def ::age number?)
=> :user/age
user> (s/def ::person-ast (s/keys :req-un [::name ::age]))
:user/person-ast
Run Code Online (Sandbox Code Playgroud)
现在它似乎兼容:
user> (s/conform ::person-ast (s/conform ::person '(person "Henry The Sloth" 55)))
=> {:person-sym person, :name …Run Code Online (Sandbox Code Playgroud) 这是我遇到的问题的最小示例:
struct S<'a> {
value: &'a mut Option<()>,
}
impl<'a> S<'a> {
fn f<'b>(&'b mut self) {
*self.value = Some(());
let value: &'a () = self.value.as_ref().unwrap();
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
error[E0495]: cannot infer an appropriate lifetime for autoref due to conflicting requirements
--> src/lib.rs:8:34
|
8 | let value: &'a () = self.value.as_ref().unwrap();
| ^^^^^^
|
note: first, the lifetime cannot outlive the lifetime `'b` as defined on the method body at 6:7...
--> src/lib.rs:6:7
|
6 | fn f<'b>(&'b …Run Code Online (Sandbox Code Playgroud) 我正在教自己Haskell.
我想编写一个递归查找第一个数字的函数,该数字具有整数平方根并且小于起始数.
它看起来像这样:
findFirstSquare :: Int -> Int
findFirstSquare x
| x <= 0 = error "This function only works for 1 or above"
| fromInteger(floor(sqrt(x))) == (sqrt x) = x
| otherwise = intSqrt(x - 1)
Run Code Online (Sandbox Code Playgroud)
但GHC抱怨说:
(RealFrac Int)没有因使用'floor'而产生的实例......
但是,如果我在GHCi中键入以下内容,它会愉快地编译它:
fromInteger(floor(sqrt(4))) == (sqrt 4)
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么我从GHCi中成功编译的表达式中得到类型错误?
我很熟悉函数式编程和来自OOP和C#背景的F#,我注意到在函数式编程方法中,常常是静态的,在模块中根据类型(我可以理解为什么).
例如,为了工作,list你可以使用中发现的功能List模块,工作与option有与Option模块等
但是,当我接受基类的参数时,会发生什么,并且派生类有更合适的实现呢?
在OOP中,将调用适当的实现,即派生实现,即使该对象静态地是基类,因为该成员已被覆盖.
如何在函数式编程中?
如果你有基类型作为参数(你应该),你只能使用它的函数,就像你只能在OOP中调用基类的成员一样.
唯一不同的是,在OOP中,被叫成员是合适的成员.
我做了一个cabal沙箱,安装了一个包,但runhaskell Setup configure抱怨我刚刚安装的软件包依赖项丢失了.
我验证了包名称和版本,这没关系.
运行cabal install --dependencies-only说"已经安装了所有请求的包".
发生了什么以及如何解决?
如果相关我在Windows 7上使用QuickCheck-2.7.5使用cabal-install 1.20.0.3使用cabal 1.20.0.1和ghc 7.6.3.
通过runhaskell Setup configure输出配置:
配置MyPackage-0.1.0.0 ...
Setup.hs:至少缺少以下依赖项:QuickCheck == 2.7.5
Applicative有这个(<*>)功能:
(<*>) :: (Applicative f) => f (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)
了解您的Haskell显示以下功能.
鉴于:
ap :: (Monad m) => m (a -> b) -> m a -> m b
ap f m = do
g <- f -- '<-' extracts f's (a -> b) from m (a -> b)
m2 <- m -- '<-' extracts a from m a
return (g m2) -- g m2 has type `b` and return makes it …Run Code Online (Sandbox Code Playgroud) 我有一个类型封装外部资源的键.一旦密钥丢失(共享它的所有值都超出范围),资源应该(隐式地)在下一个垃圾收集中释放,就像内存对常规值一样.
所以我正在寻找类似于OOP处理的东西,或者ForeignPtr,我只代表对外语对象的引用(尽管如果ForeignPtr能够正确和优雅地为此工作,知道如何也回答这个问题).
可能吗?如果是这样,怎么样?