Нормальный Ruby способ сделать это должно использовать блок.
, Таким образом, это было бы что-то как:
def weightedknn( data, vec1, k = 5 )
foo
weight = yield( dist )
foo
end
И используемый как:
weightenknn( data, vec1 ) { |dist| gaussian( dist ) }
Этот шаблон используется экстенсивно в Ruby.
К сожалению, я не знаю простого встроенного способа сделать это. Однако вы могли бы собрать что-нибудь самостоятельно. Вот пример:
public static class TimeZoneInfoExtensions {
public static string Abbreviation(this TimeZoneInfo Source) {
var Map = new Dictionary<string, string>()
{
{"eastern standard time","est"},
{"mountain standard time","mst"},
{"central standard time","cst"},
{"pacific standard time","pst"}
//etc...
};
return Map[Source.Id.ToLower()].ToUpper();
}
}
Используйте следующее:
string CurrentTimeZoneAbbreviation = System.TimeZoneInfo.Local.Abbreviation();
Если вам нужно больше преобразований, вы можете просто вставить их в словарь карты.
TimeZoneInfo.Id будет строкой, соответствующей заданному ключу в [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Time Zones]. Если вы можете найти соответствующую базу данных в Интернете, содержащую те же идентификаторы, а также сокращения,