问题列表 - 第38038页

为什么模式匹配不会在Maybe monad中抛出异常

我的问题很简单.为什么错误的模式匹配不会在Maybe monad中抛出异常.为清楚起见:

data Task = HTTPTask {
 getParams   ::  [B.ByteString],
 postParams  ::  [B.ByteString],
 rawPostData ::  B.ByteString 
}  deriving (Show)

tryConstuctHTTPTask :: B.ByteString -> Maybe Task
tryConstuctHTTPTask str = do
 case decode str of
    Left _  -> fail ""
    Right (Object trie) -> do
        Object getP    <- DT.lookup (pack "getParams")   trie
        Object postP   <- DT.lookup (pack "postParams")  trie
        String rawData <- DT.lookup (pack "rawPostData") trie
        return $ HTTPTask [] [] rawData
Run Code Online (Sandbox Code Playgroud)

看看tryConstuctHTTPTask函数.我认为当模式不匹配时(例如" Object getP ")我们必须得到类似" Prelude.Exception "的东西,而不是我得到的" Nothing ".我喜欢这种行为,但我不明白为什么. …

monads haskell exception

8
推荐指数
1
解决办法
595
查看次数

Makefile,用于区分Windows和类Unix系统

我想在Linux和Windows上构建相同的Makefile.我在Linux上使用默认的GNU make,在Windows上使用 mingw32-make(也是GNU make).

我希望Makefile检测它是在Windows还是Linux上运行.


例如make clean,Windows上的命令如下所示:

clean:
    del $(DESTDIR_TARGET)
Run Code Online (Sandbox Code Playgroud)

但在Linux上:

clean:
    rm $(DESTDIR_TARGET)
Run Code Online (Sandbox Code Playgroud)

另外我想在Windows(\)和Linux(/)上使用不同的目录分隔符.


可以在Makefile中检测Windows操作系统吗?

PS:我不想在Windows上模拟Linux(cygwin等)

有类似的问题:操作系统检测makefile,但我没有在这里找到答案.

linux windows makefile os-detection

42
推荐指数
3
解决办法
3万
查看次数

PHP:如何创建编码为"无BOM的UTF-8"的文件

我想,大多数人都知道我们对文件进行了以下编码:

  • ANSI
  • UTF-8

通过在文件开头添加三个字符来识别UTF-8,但是这些字符会导致PHP语言中的一些问题,因为我们知道所以我们使用

  • 没有BOM的UTF-8(而不是UTF-8)

这是我的问题:如何使用frwite()或任何其他函数(无关紧要)编写一个新文件(使用PHP)编码(UTF-8无BOM)

(我不是在询问编辑器设置>我要求创建一个带有php函数的文件)

php unicode byte-order-mark utf-8

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

Android,挑选图片

有没有可能从图片文件夹中挑选图片的方法?

android android-image

4
推荐指数
1
解决办法
9211
查看次数

xPath 帮助 &gt; 使用 alt='My Keyword' 查找 img

如何更改此 xpath 以查找内容是否包含带有包含我的关键字词组的 alt 的 img 标签?

$xPath->evaluate('count(/html/body//'.$tag.'[contains(.,"'.$keyword.'")])');

xpath domdocument

2
推荐指数
1
解决办法
1万
查看次数

AssemblyFileVersionAttribute的作用是什么?

我不知道AssemblyFileVersion属性的具体目的是什么.我知道AssemblyVersion是强名称的一部分,它是4-pla(程序集名称,汇编版本,文化,公钥令牌),但我不知道如何正确使用Assembly*File*Version.

我目前在visual studio中使用BuildVersionIncrement插件来增加每个编译时的AssemblyVersion版本号,我目前处于2.2.0.0版本(我在升级次要版本时重置了修订版),但我目前将AssemblyFileVersion与主要和次要版本对齐,所以现在是2.2

我的问题是

AssemblyFileVersion的最佳实践价值是什么?该属性在版本控制中会产生什么影响?如果在使用最新版本的AssemblyVersion发布我的程序集的较新版本时,我将不再更改该值,该怎么办?

先感谢您

.net

4
推荐指数
1
解决办法
1281
查看次数

c#中的完整操作系统

我在这里看到了这个帖子.我想知道这是否合法(听起来像这样)以及这样做的缺点是什么.在一些架构中独立运行它需要什么?谢谢

c# operating-system

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

错误CS0563(二元运算符的参数之一必须是包含类型)

我的源代码(如下)正在生成错误 CS0563,因为我的 CombinedJobs 运算符+(请参阅源代码中的“//Step 5:...”)中的两个参数都被列为 Job(而不是 int、double 等)。我该如何更改此代码以消除此错误?此代码是为了响应下面列出的分配。

\n\n

任务:

\n\n

“为 Harold\xe2\x80\x99s Home Services 设计一个 Job 类。该类包含四个数据字段\xe2\x80\x94Job\n描述(例如,\xe2\x80\x9cwash windows\xe2\x80\x9d)、时间完成作业的小时数(例如,\n3.5)、作业的每小时费率(例如,25.00 美元)以及作业的总费用\n(每小时费率乘以小时数)。包括获取和设置每个作业的属性字段,\n总费用\xe2\x80\x94 除外,该字段为只读,并且每次\n设置每小时费用或\n小时数时都会计算其值。重载 + 运算符,以便可以\n创建两个作业添加。两个作业的总和是一个新作业,其中包含两个\原始作业的描述(由 \xe2\x80\x9cand\xe2\x80\x9d 连接)、原始作业的时间总和(以小时为单位),以及\ “原始作业的每小时平均费率。编写一个 Main() 函数,\n演示所有方法都能正常工作。将文件另存为 DemoJobs.cs。”

\n\n

来自:Microsoft\xc2\xae Visual C#\xc2\xae 2008,面向对象编程简介,3e,Joyce Farrell

\n\n

源代码:

\n\n
using System;\n\n//Step 1: Creating the Job class and designating its fields\n\n   public class Job\n\n   {\n\n      private string jobDescription;\n\n      private int jobTotalTime;\n\n      private double jobRate;\n\n      private double jobTotalFee;\n\n\n//Step 2: Using the \'this\' object will allow me to designate values for \n\n//"this" instantiation of …
Run Code Online (Sandbox Code Playgroud)

c# operator-overloading instantiation

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

扫描仪不读取整个句子 - 扫描仪类的next()和nextLine()之间的差异

我正在编写一个程序,允许用户输入他的数据然后输出它.它的3/4是正确的但是当它到达输出地址时它只打印一个字,只能说'Archbishop'来自'Archbishop Street'.我该如何解决?

import java.util.*;

class MyStudentDetails{
    public static void main (String args[]){
        Scanner s = new Scanner(System.in);
        System.out.println("Enter Your Name: ");
        String name = s.next();
        System.out.println("Enter Your Age: ");
        int age = s.nextInt();
        System.out.println("Enter Your E-mail: ");
        String email = s.next();
        System.out.println("Enter Your Address: ");
        String address = s.next();

        System.out.println("Name: "+name);
        System.out.println("Age: "+age);
        System.out.println("E-mail: "+email);
        System.out.println("Address: "+address);
    }
}
Run Code Online (Sandbox Code Playgroud)

java java.util.scanner

21
推荐指数
7
解决办法
9万
查看次数

在C++中使用Typcasting vector <object>?

我有两个类,障碍和boid,boid继承自障碍.

现在我想编写一些可以处理这两个类的对象的函数,这样传递vector<boid>就可以了vector<obstacle>.

当我像这样进行类型转换并尝试访问向量的大小时,我得到的数字是1840700394而不是60:

vector<boid>* boids; ....
cout << ((vector<obstacle>*)boids)->size() << endl;
Run Code Online (Sandbox Code Playgroud)

我也试过"reinterpret_cast"但同样的问题.

c++ inheritance casting

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