作为一种编程语言,我非常喜欢C#。但有一件事我真的很想在其中看到的,那就是用Python中的方法来分隔代码块--使用标识。
我在IronPython上看了一下,但它带来的python内容似乎比我需要的要多得多。
有没有人知道用标识代替花括号的简单方法?
更新:请比较C#中的类定义:
class Foo
{
public string bar()
{
return "smth";
}
}
和Python:
class Foo(object):
def bar(self):
return "smth"
看看在C#变体中使用了多少冗余空间。我的目标是充分利用这两种语言的优势。
发布于 2013-08-22 14:59:39
Boo是一种具有静态类型的.Net语言。它使用CLR,因此您可以与包括c#在内的其他.Net代码共享;它可以与winforms、system.io和其他熟悉的库一起使用。它看起来很像python:在Boo中比较一下:
internal class TileBytes:
public Size as int
public def constructor(size as int):
Size = size
public def Generate(tile as Tile) as (byte):
buffer as (byte) = array(byte, ((Size * Size) * 3))
for u in range(0, Size):
for v in range(0, Size):
pixelColor as Color32 = GetColor(tile, u, v)
bufferidx as int = (3 * ((u * Size) + v))
buffer[bufferidx] = pixelColor.r
buffer[(bufferidx + 1)] = pixelColor.g
buffer[(bufferidx + 2)] = pixelColor.b
return buffer
public def GetColor(tile as Tile, u as int, v as int) as Color32:
h as int = (0 if (v > (Size / 2.0)) else 2)
w as int = (0 if (u > (Size / 2.0)) else 1)
tc as TileCorner = ((h cast TileCorner) + w)
return tile[tc].GetPixel(v, (Size - (u + 1)))
在C#中执行此操作
class TileBytes
{
public int Size;
public TileBytes(int size)
{
Size = size;
}
public byte[] Generate(Tile tile)
{
byte[] buffer = new byte[Size * Size * 3];
for (int u = 0; u < Size; u++)
{
for (int v = 0; v<Size; v++)
{
Color32 pixelColor = GetColor (tile, u, v);
int bufferidx = 3 * (( u * Size) + v);
buffer[bufferidx] = pixelColor.r;
buffer[bufferidx + 1] = pixelColor.g;
buffer[bufferidx + 2] = pixelColor.b;
}
}
return buffer;
}
public Color32 GetColor(Tile tile, int u, int v)
{
int h = v > Size / 2.0 ? 0 : 2;
int w = u > Size / 2.0 ? 0 : 1;
TileCorner tc = (TileCorner) h + w;
return tile[tc].GetPixel(v, Size - (u + 1));
}
}
Boo也是一个active open source project
发布于 2013-08-22 13:35:47
return someValue == true ? DoSomething() : DoSomethingElse()
而不是
if (someValue == true)
{
DoSomething();
}
else
{
DoSoemthingElse();
}
xDDD
发布于 2013-08-22 12:36:01
为了在你的代码中“节省”空间,你总是可以调整这种编码风格:
private void DoWork() {
if(true) {
DoMoreWork();
} else {
DoLessWork();
}
}
我已经使用它快一年了,我对代码的可读性非常满意。
https://stackoverflow.com/questions/18379611
复制相似问题