Я изучаю Ruby.
Я нашел метод String#each
по http://ruby-doc.org/core/classes/String.html.
Когда я пытаюсь использовать его...
irb(main):001:0> "hello\nworld".each {|s| p s}
NoMethodError: undefined method `each' for "hello\nworld":String
... но я получаю это NoMethodError
.
Я использую Ruby 1.9.1p253, таким образом, я не думаю, что использую старую версию. Что продолжается?
работает в 1.8.7, не отображается в документах 1.9 - должно быть устарено.
Здесь мы идем: https://web.archive.org/web/20090423003136/http://eigenclass.org/hiki.rb?changes+in5ruby+1.9#L113
Ruby 1.9 больше не имеет каждый
на строке
класс. Используйте либо каждый_Чах
или в каждом уровне
в зависимости от того, что вы хотите сделать. Документы для Ruby 1.9 строки
http://ruby-doc.org/core-1.9.3/string.html .
Я разрешил эту самую ошибку на Java 1,6 следующей строкой:
// Specify you want a factory for RELAX NG "compact"
System.setProperty(SchemaFactory.class.getName() + ":" + XMLConstants.RELAXNG_NS_URI, "com.thaiopensource.relaxng.jaxp.CompactSyntaxSchemaFactory");
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.RELAXNG_NS_URI);
Это позволяет мне использовать Jing для проверки XML-документа на соответствие схеме Compact RELAX NG. Полный пример ниже. Я не использовал мост или что-то еще. Путь к классам среды выполнения имеет только jing.jar (20091111) и собственный класс Validator.
import java.io.File;
import java.io.IOException;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
public class Validate
{
public static void main(String[] args) throws SAXException, IOException
{
// Specify you want a factory for RELAX NG
System.setProperty(SchemaFactory.class.getName() + ":" + XMLConstants.RELAXNG_NS_URI, "com.thaiopensource.relaxng.jaxp.CompactSyntaxSchemaFactory");
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.RELAXNG_NS_URI);
// Load the specific schema you want.
// Here I load it from a java.io.File, but we could also use a
// java.net.URL or a javax.xml.transform.Source
File schemaLocation = new File(args[0]);
// Compile the schema.
Schema schema = factory.newSchema(schemaLocation);
// Get a validator from the schema.
Validator validator = schema.newValidator();
for (int i = 1; i < args.length; i++)
{
String file = args[i];
// Check the document
try
{
validator.validate(new StreamSource(new File(file)));
System.out.println(file + " is valid.");
}
catch (SAXException ex)
{
System.out.print(file + " is not valid because: " + ex.getMessage());
}
}
}
}
Еще раз я протестировал только этот ион Java 1,6.
$ java -version
java version "1.6.0_01"
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)
-121--2466041- Вместо этого используйте each _ char
:
"hello\nworld".each_char {|s| p s}
относительно того, почему он не работает, он работает в 1.8, но не 1.9.
Вы смотрите на документы для 1.8. Строка # каждый был удален в 1.9. Вместо этого используйте каждый_line.