为了获得在Haskell的进一步经验,我开始使用print和printf。
我想尝试打印一个数组(好吧,有几个,但它只是一个开始)我希望使用格式"%+.4f"
,这意味着我会得到:
+2.1234 or -1.2345
但是我注意到使用printf打印数组非常困难,所以我尝试切换打印。以这种方式打印列表似乎更容易,但我不确定如何使用与printf相同的格式打印列表元素。
我的列表看起来像这样:
[-1.2, 2.3, 4.7, -6.850399]
答案 0 :(得分:3)
两种变体应该使用printf的两种可能的返回类型:
putStrLn $ concatMap (printf "%+.4f\n") [-1.2, 2.3, 4.7, -6.850399]
mapM_ (printf "%+.4f\n") [-1.2, 2.3, 4.7, -6.850399]
编辑:用于遍历两个深度列表:
putStrLn $ (concatMap . concatMap) (printf "%+.4f\n") [[-1.2, 2.3], [4.7, -6.850399]]
(mapM_ . mapM_) (printf "%+.4f\n") [[-1.2, 2.3], [4.7, -6.850399]]
答案 1 :(得分:2)
您可以使用 try{
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG,90, bytes);
imgUri = "photo_" + System.currentTimeMillis() + ".jpg";
File appDirectory = new File(Environment.getExternalStorageDirectory(),"CountDotsAppImages");
appDirectory.mkdirs();
File destination = new File(Environment.getExternalStorageDirectory(),"CountDotsAppImages/"+imgUri);
FileOutputStream fo;
try {
destination.createNewFile();
fo = new FileOutputStream(destination);
fo.write(bytes.toByteArray());
fo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
模块中的功能。例如"%+。4f"可以表示为
Numeric
然后,您可以在列表上映射此函数,以获取字符串列表。
formatFloat x = showFFloat (Just 4) x ""
(因为这些已经是字符串我使用> map formatFloat [-1.2, 2.3, 4.7, -6.850399]
["-1.2000","2.3000","4.7000","-6.8504"]
代替putStrLn
来显示输出。)