我非常喜欢C#作为编程语言。 但我真正希望在其中看到的一种方法是用Python中的方式分隔块 - 使用标识。
我简单介绍了IronPython,但它似乎带来了比我需要的更多的python东西。
有人知道使用标识而不是大括号的简单方法吗?
UPD: 请比较C#中的类定义:
class Foo
{
public string bar()
{
return "smth";
}
}
和Python:
class Foo(object):
def bar(self):
return "smth"
查看C#变体中使用了多少冗余空间。我的目标是使用两种语言中最好的。
答案 0 :(得分:2)
Boo是一种静态类型的.Net语言。它使用CLR,因此您可以与其他.Net代码共享,包括c#;它适用于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也是一个活跃的open source project
答案 1 :(得分:0)
要在代码中“保存”空间,您始终可以采用这种编码方式:
private void DoWork() {
if(true) {
DoMoreWork();
} else {
DoLessWork();
}
}
我已经使用它近一年了,对我的代码的可读性非常满意。
答案 2 :(得分:0)
return someValue == true ? DoSomething() : DoSomethingElse()
而不是
if (someValue == true)
{
DoSomething();
}
else
{
DoSoemthingElse();
}
XDDD