通过Haskell Prelude,我看到了一个函数 const:
const x _ = x
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到有关此功能的任何相关内容.
重点是什么?任何人都可以举例说明这个函数的用途吗?
我正在进行IE8测试的一些进展,似乎旧的使用技术margin: 0 auto;在IE8的所有情况下都不起作用.
下面的HTML在FF3,Opera,Safari,Chrome,IE7和IE8 compat中给出了一个居中按钮,但不是 IE8标准:
<div style="height: 500px; width: 500px; background-color: Yellow;">
<input type="submit" style="display: block; margin: 0 auto;" />
</div>
Run Code Online (Sandbox Code Playgroud)
(作为一种解决方法,我可以为按钮添加显式宽度).
所以问题是:哪些浏览器是正确的?或者这是行为未定义的情况之一?
(我的想法是所有的浏览器都不正确 - 如果它是"display:block",按钮不应该是100%宽度?)
更新:我是个笨蛋.由于输入不是块级元素,我应该将它包含在带有"text-align:center"的div中.话虽如此,为了好奇,我仍然想知道按钮是否应该在上面的例子中居中.
对于BOUNTY:我知道我在这个例子中做了一些奇怪的事情,正如我在更新中指出的那样,我应该把它对准中心.对于赏金,我想参考回答的规格:
如果我设置"display:block",按钮的宽度应该是100%吗?或者这是不确定的?
由于显示是块,应该"margin:0 auto;" 中心按钮,或不,或未定义?
我正在研究Project Euler中的问题,作为学习Haskell的一种方式,我发现我的程序比同类C版本慢很多,即使在编译时也是如此.我该怎么做才能加速我的Haskell程序?
例如,我对问题14的强力解决方案是:
import Data.Int
import Data.Ord
import Data.List
searchTo = 1000000
nextNumber :: Int64 -> Int64
nextNumber n
| even n = n `div` 2
| otherwise = 3 * n + 1
sequenceLength :: Int64 -> Int
sequenceLength 1 = 1
sequenceLength n = 1 + (sequenceLength next)
where next = nextNumber n
longestSequence = maximumBy (comparing sequenceLength) [1..searchTo]
main = putStrLn $ show $ longestSequence
Run Code Online (Sandbox Code Playgroud)
这需要大约220秒,而"等效"暴力C版本只需要1.2秒.
#include <stdio.h>
int main(int argc, char **argv) …Run Code Online (Sandbox Code Playgroud) 假设我有一节课:
class Foo
{
public string Bar
{
get { ... }
}
public string this[int index]
{
get { ... }
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用"{Binding Path = Bar}"和"{Binding Path = [x]}"绑定到这两个属性.精细.
现在让我们说我想实现INotifyPropertyChanged:
class Foo : INotifyPropertyChanged
{
public string Bar
{
get { ... }
set
{
...
if( PropertyChanged != null )
{
PropertyChanged( this, new PropertyChangedEventArgs( "Bar" ) );
}
}
}
public string this[int index]
{
get { ... }
set
{
...
if( PropertyChanged != null …Run Code Online (Sandbox Code Playgroud) 在RESTful接口中处理乐观锁定的推荐方法似乎是ETag从GET 返回一个并If-Match在PUT上提供一个,即:
GET /items/1 --> gives client an ETag for a single item
PUT /items/1 <-- client gives it back as If-Match for checking
Run Code Online (Sandbox Code Playgroud)
如何将此方案与多个项目一起使用,例如,如果我要批量从单个URI中获取多个项目:
GET /items --> How do I return multiple ETags for multiple items here?
Run Code Online (Sandbox Code Playgroud)
或者,如果ETags/If-Match不能应对这种情况,那么推荐的方法是什么?或者我应该自己动手?
我试图了解Haskell中的错误处理.我发现文章" 8种方法来报告Haskell中的错误 ",但我很困惑为什么Maybe和Either表现不同.
例如:
import Control.Monad.Error
myDiv :: (Monad m) => Float -> Float -> m Float
myDiv x 0 = fail "My divison by zero"
myDiv x y = return (x / y)
testMyDiv1 :: Float -> Float -> String
testMyDiv1 x y =
case myDiv x y of
Left e -> e
Right r -> show r
testMyDiv2 :: Float -> Float -> String
testMyDiv2 x y =
case myDiv x y of
Nothing -> "An error"
Just …Run Code Online (Sandbox Code Playgroud) 假设我的Vector数据类型定义如下:
data Vector = Vector { x :: Double
, y :: Double
, z :: Double
}
Run Code Online (Sandbox Code Playgroud)
使用成员访问来定义函数是否更常见:
vecAddA v w
= Vector (x v + x w)
(y v + y w)
(z v + z w)
Run Code Online (Sandbox Code Playgroud)
或者使用模式匹配:
vecAddB (Vector vx vy vz) (Vector wx wy wz)
= Vector (vx + wx)
(vy + wy)
(vz + wz)
Run Code Online (Sandbox Code Playgroud)
(如果我的任何术语不正确,请道歉).
我正在尝试使用FLEX和BISON解析遗留语言(类似于'C').除了匹配字符串之外,一切都很好用.
这种相当奇怪的遗留语言不支持在字符串文字中引用字符,因此以下都是有效的字符串文字:
"hello"
""
"\"
Run Code Online (Sandbox Code Playgroud)
我正在使用以下规则来匹配字符串文字:
\".*\" { yylval.strval = _strdup( yytext ); return LIT_STRING; }
Run Code Online (Sandbox Code Playgroud)
不幸的是,这是一个贪婪的匹配,所以它匹配如下代码:
"hello", "world"
Run Code Online (Sandbox Code Playgroud)
作为单个字符串(hello", "world).
通常的非贪婪量词.*?似乎在FLEX中不起作用.有任何想法吗?
我正在尝试使用HttpSelfHostServer自托管ASP.NET MVC 4 WebAPI.一切都很好我尝试添加自定义依赖项解析器.(最终这将使用StructureMap,但我还没有达到这一点).如果我尝试实例化自定义解析程序,则在启动服务器时会出现以下异常:
TypeLoadException:类型违反的继承安全规则:'System.Web.Mvc.CompareAttribute'.派生类型必须与基本类型的安全可访问性匹配,或者不太容易访问.
代码如下:
public class CustomDependencyResolver : IDependencyResolver
{
public object GetService( Type serviceType )
{
return null;
}
public IEnumerable<object> GetServices( Type serviceType )
{
return null;
}
}
...
// To trigger the exception, all I need to do is instantiate the custom resolver.
var dependencyResolver = new CustomDependencyResolver();
// Exception is thrown when I create the server:
var server = new HttpSelfHostServer( _config );
Run Code Online (Sandbox Code Playgroud)
请注意,我不需要对解析器执行任何操作 - 它是简单的,是实例化它的行为,以后会触发失败.
奇怪的是,这个例外只发生在调试(F5)中 - 如果我通过Ctrl + F5运行,一切正常.
有关如何解决此问题的任何想法?
堆栈跟踪: …
假设我有一个STL映射,其中值是指针,我想将它们全部删除.我如何表示以下代码,但是使用std :: for_each?我很高兴使用Boost的解决方案.
for( stdext::hash_map<int, Foo *>::iterator ir = myMap.begin();
ir != myMap.end();
++ir )
{
delete ir->second; // delete all the (Foo *) values.
}
Run Code Online (Sandbox Code Playgroud)
(我发现了Boost checked_delete,但我不确定如何将其应用于pair<int, Foo *>迭代器所代表的).
(另外,出于这个问题的目的,忽略存储需要在STL容器中删除的原始指针的事实并不是很明智).
注意:我随后在下面找到并列出了一个单行答案......但是代码非常糟糕,所以我接受了GMan的理智答案.
haskell ×4
algorithm ×1
asp.net-mvc ×1
boost ×1
c ×1
c++ ×1
coding-style ×1
css ×1
etag ×1
flex-lexer ×1
html ×1
http ×1
lex ×1
monads ×1
performance ×1
regex ×1
rest ×1
stl ×1
wpf ×1