Как иметь функцию с nullable строковым параметром в Движении?

Да Вы можете. Создайте каталог, поскольку нормальный тогда просто устанавливает атрибуты на нем. Например,

DirectoryInfo di = new DirectoryInfo(@"C:\SomeDirectory");

//See if directory has hidden flag, if not, make hidden
if ((di.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)
{   
     //Add Hidden flag    
     di.Attributes |= FileAttributes.Hidden;    
}
11
задан hannson 19 March 2010 в 16:18
поделиться

3 ответа

Я подумал еще о том, как реализовать это с помощью структуры . Вот что я придумал:

type MyString struct {
    val string;
}

func f(s MyString) {
    if s == nil {
        s = MyString{"some default"};
    }
    //do something with s.val
}

Тогда вы можете позвонить f так:

f(nil);
f(MyString{"not a default"});
6
ответ дан 3 December 2019 в 10:44
поделиться

На самом деле нет ответа: но значение деформации в структуре может обеспечить некоторый общий метод полезности. ( Haskell Maybe ?)

//#maybe.go
package maybe

import "log"

type MayHaveValue struct {
 IsValue bool;
}

func (this MayHaveValue) IsJust() bool {
 return this.IsValue
}

type AString struct {
 MayHaveValue;
 Value string;
}

func String(aString string) AString {
 return AString{MayHaveValue{true}, aString}
}

var NoString AString = AString{MayHaveValue{false}, ""}

func (this AString) String() (value string) {
 if this.IsJust() == true {
  value = this.Value;
 } else {
  log.Crash("Access to non existent maybeString value");
 }
 return;
}

func (this AString) OrDefault(defaultString string) (value string) {
 if this.IsJust() {
  value = this.Value;
 } else {
  value = defaultString;
 }
 return;
}

//#main.go
package main

import "fmt"
import "maybe"

func say(canBeString maybe.AString) {
 if canBeString.IsJust() {
  fmt.Printf("Say : %v\n", canBeString.String());
 } else {
  fmt.Print("Nothing to say !\n");
 }
}

func sayMaybeNothing (canBeString maybe.AString) {
 fmt.Printf("Say : %v\n", canBeString.OrDefault("nothing"));
}

func main() {
 aString := maybe.String("hello");
 say(aString);
 sayMaybeNothing(aString);
 noString := maybe.NoString;
 say(noString);
 sayMaybeNothing(noString);
}
1
ответ дан 3 December 2019 в 10:44
поделиться
121 --- 2727114

Свободный Java-Drught и просто пройти f (""). Затем проверьте, используя LEN ():

FUNC F (Str String) { Если len (str)> 0 { ... } еще { ... } }

Либо строка пуста и имеет семантическое значение вашего корпуса NIL, либо иначе имеет несколько строковых данных для обработки. Не могу видеть проблему с этим.

-3
ответ дан 3 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: